using System;
using System.Collections.Generic;


class Program
{
    static void Main()
    {
        Graph graph = new Graph();
        graph.AddVertex("A");
        graph.AddVertex("B");
        graph.AddVertex("C");
        graph.AddVertex("D");
        graph.AddVertex("E");
        graph.AddVertex("F");
        graph.AddEdge("A", "B");
        graph.AddEdge("A", "C");
        graph.AddEdge("B", "D");
        graph.AddEdge("C", "E");
        graph.AddEdge("D", "E");
        graph.AddEdge("E", "F");
        graph.AddEdge("B", "F");

        graph.PrintGraph();
    }
}

public class Graph
{
    private List<string> vertices;
    private List<string[]> edges;

    public Graph()
    {
        vertices = new List<string>();
        edges = new List<string[]>();
    }

    public void AddVertex(string vertex)
    {
        vertices.Add(vertex);
    }

    public void AddEdge(string vertex1, string vertex2)
    {
        edges.Add(new string[] { vertex1, vertex2 });
    }

    public void PrintGraph()
    {
        Console.WriteLine("Vertices:");
        foreach (var vertex in vertices)
        {
            Console.WriteLine(vertex);
        }

        Console.WriteLine("Edges:");
        foreach (var edge in edges)
        {
            Console.WriteLine($"{edge[0]} - {edge[1]}");
        }
    }

    public void PrintDFS(Graph g, string v)
    {
        PreVisit(v);

        // logic

        PostVisit(v);
    }

    public void PrintBFS(Graph g, string v, Queue<string> q)
    {
        // logic
    }

    private void PreVisit(string v)
    {
        Console.WriteLine("We arrived to vertex: " + v);
    }
    private void PostVisit(string v)
    {
        Console.WriteLine("We are coming back on vertex: " + v);
    }
    private void End(string v)
    {
        Console.WriteLine("This vertex is last on this path: " + v);
    }
}