import java.util.*;
import java.io.*;
public class Graph {
 int num = 0;
  ArrayList<Edge> list = new ArrayList<Edge>();  //隣接ノード//
  ArrayList<Node> nodes = new ArrayList<Node>();  //ノード番号、隣接数、先頭オフセット//
 class Edge {
  private int to;
  Edge(int to) {this.to = to;}
  int To() { return to;}
 }
 class Node {
  int id; int Num; int pointer;
  Node (int id,int Num, int pointer) {this.id = id; this.Num = Num; this.pointer = pointer;}
  int getNum() {return this.Num;}
  int getId(){ return this.id;}
  int getPointer() { return this.pointer;}
  }

 void LoadGraph(String filename){
 try{
  Scanner scan = new Scanner(new File(filename));
  int pointer = 0;
 while(true){
 if( !scan.hasNextLine()) {
   break;
 }
 String line = scan.nextLine();
 String s = line.split(":",2);
 String
t = s[1].split(",",0);
 for (int i = 0; i < t.length; i++) {
 Edge e = new Edge(Integer.parseInt(t[i]));
 list.add(e);
 }
 Node n = new Node(Integer.parseInt(s[0]), t.length, pointer);
 nodes.add(n);
 num ++;
 pointer = pointer + t.length;
  }
 } catch (java.io.FileNotFoundException e){
  System.out.println(e);
  System.exit(0);
  }
 }

 void printGraph(){
 for (int j = 0; j < num ; j++) {
 System.out.print(nodes.get(j).getId() + ":");
 System.out.print(list.get(nodes.get(j).getPointer()).To()); 
 for (int k = 1; k < nodes.get(j).getNum(); k++) {
 System.out.print(", " + list.get(nodes.get(j).getPointer() + k).To());
   }
 System.out.println();
  }

}
}