import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.*;

class loadGraph
{
	
	public static void main(String args[])
	{
		try
		{
		FileInputStream f=new FileInputStream("graph_edges.txt");
		FileOutputStream fout=new FileOutputStream("freq"+args[0]+".txt");
		PrintStream ds3=new PrintStream(fout);
		//ds3.
		DataInputStream bf=new DataInputStream(f);
		//ds.print("Concepts learned for "+param.get(i-8)+" are:");
		ArrayList<arr_tree> xy=new ArrayList<arr_tree>();
		int depthness=Integer.parseInt(args[0]);
				
		while(bf.available()>0)
		{
			String str=bf.readLine();
			//System.out.println("hi");
		    
			StringTokenizer sToken=new StringTokenizer(str,",");
			//System.out.println();
			sToken.nextToken();
			
			Integer ref=Integer.parseInt(sToken.nextToken().trim());
			
			Integer str1=Integer.parseInt(sToken.nextToken().trim());
			Integer str2=Integer.parseInt(sToken.nextToken().trim()); 
			int pos_arr=searchArray(xy,str1.intValue());
		if(pos_arr>=0)
		{
			xy.get(pos_arr).addChild(str2.intValue(), ref.intValue());
		}
		else
		{
			arr_tree u=new arr_tree();
			u.setParent(str1.intValue());
			u.addChild(str2.intValue(), ref.intValue());
			xy.add(u);
		}
		//System.out.println("total number of parents is "+xy.size());	
			//sToken.nextToken();
		    
	}
		//System.out.println("total number of parents is "+xy.size());
		for(int i=0;i<xy.size();i++)
		{
			ds3.print(xy.get(i).getParent()+":");
			ArrayList<ele_tree> bn=xy.get(i).getChild();
			
			for(int j=0;j<xy.get(i).getChildreSize();j++)
			{
				if(depthness==1)
				{
				ds3.print(bn.get(j).getChild()+",");
				}
				if(depthness==2)
				{
				int two_dist=bn.get(j).getChild();
				int nn=searchArray(xy,two_dist);
				if(nn>=0)
				{
					int dep_size=xy.get(nn).getChild().size();
					ArrayList<ele_tree> bn2=xy.get(nn).getChild();
					for(int q=0;q<dep_size;q++)
					{
					ds3.print(bn2.get(q).getChild()+",");	
					}
				}
				}
				
			}
			ds3.println();
		}
		}catch(Exception e)
		{
			System.err.println(e);
		}
}
	
	public static int searchArray(ArrayList<arr_tree>gh,int par)
	{
		
		for(int i=0;i<gh.size();i++)
		{
			if(gh.get(i).getParent()==par)
				return i;
		}
		return -1; 
	}
}