import java.io.*;
import java.util.*;

public class Template {
	static int num;
	static int n1;
	static int n2;
	static int nc;
	static Node[] n;
	public static void main(String[] args) {
		try {
			Scanner a = new Scanner(new File("DATA5.txt"));
			PrintStream o = new PrintStream(new File("OUT5.txt"));
			n = new Node[20];
			for(int z = 0; z < 5; z++) {
				
				num = a.nextInt();
				n1 = 0;
				n2 = 0;
				nc = 0;
				for(int i = 0; i < num; i++) {
					n1 = a.nextInt();
					n2 = a.nextInt();
					nc = Math.max(nc,Math.max(n1,n2));
					if(n[n1] == null) {
						n[n1] = new Node(n1);
					}
					if(n[n2] == null) {
						n[n2] = new Node(n2);
					}
					n[n1].addLink(n2);
				}
				
				boolean k = true;
				for(int i = 1; i <= nc; i++) {
					boolean b = n[i].paint();
					if(b == false) {
						k = false;
					}
				}
				
				for(int i = 1; i <= nc; i++) {
					boolean b = n[i].paint();
					if(b == false) {
						k = false;
					}
				}
				int m = 0;
				for(int i = 1; i <= nc; i++) {
					m = Math.max(m,n[i].c);
				}
				if(k == false) {
					m = 0;
				}
				o.println(m);
			}
			
			
			
			System.exit(0);
		} catch (IOException e) { 
			System.out.println("Error" + e);
		}
	}
	

	
}


class Node {
	public int ID;
	public boolean[] l;
	public int c;
	
	public Node(int iID) {
		ID = iID;
		l = new boolean[20];
	}
	
	public void addLink(int iID) {
		l[iID] = true;
		Template.n[iID].l[ID] = true;
	}
	
	public boolean paint() {
		boolean[] col = {false,true,true,true,true};
		for(int i = 0; i < Template.nc; i++) {
			if(l[i] == true && i!=ID) {
				col[Template.n[i].c] = false;
			}
		}
		for(int i = 1; i <= 4; i++) {
			if(col[i] == true) {
				c = i;
				return true;
			}
		}
		return false;
	}
}
