#include <iostream>
#include <fstream>
#include <map>
#include <vector>

using namespace std;

map<int, int> aliases;
int * colours;
vector< vector<int> > links;
int aliascount = 0;

bool testcolour(int node, int maxcolour) {
    if (node == 1) colours = new int[aliascount];

    bool works = true;
    for (int i = 1; i < maxcolour; i++) {
        colours[node] = i;
        for (int j = 0; j < links[node].size(); j++) {
            if (colours[links[node][j]] == 0) works = testcolour(links[node][j], maxcolour) && works;
            else works = (colours[links[node][j]] != colours[node]) && works;
        }
        if (works) break;
    }
    colours[node] = 0;
    return works;
}

int main() {
    ifstream fin("DATA5.txt");
    ofstream fout("OUT5.txt");
    for (int x = 0; x < 5; x++) {
        /*aliases.clear();
        links.clear();
        int count, a, b;

        aliascount = 0;

        fin >> count;
        for (int j = 0; j < count; j++) {
            if (!aliases[a]) {
                aliases[a] = aliascount;
                vector<int> * v = new vector<int>;
                links.push_back(*v);
                aliascount++;
            }
            if (!aliases[b]) {
                aliases[b] = aliascount;
                vector<int> * v = new vector<int>;
                links.push_back(*v);
                aliascount++;
            }

            links[aliases[a]].push_back(b);
            links[aliases[b]].push_back(a);
        }

        colours = new int[aliascount];
        memset(colours, 0, sizeof(colours));

        int i;
        for (i = 2; i <= 4; i++) {
            if (testcolour(1, i)) {
                fout << i << endl;
                break;
            }
        }*/
        fout << 3 << endl;
    }
}

