#include <iostream>
#include <vector>
#include<bits/stdc++.h>
#include "code.h"

using namespace std;

vector<pair<int, int>> ZapisiTacke(int N){
    vector<pair<int, int>> tacke(N+1);
    tacke[1] = {0,1};
    for(int i=1;i<N;i++){
        tacke[i+1] = {i,0};
    }
    return tacke;
}

vector<int> Resi(int N, int Q){
    vector<int> resenje(N+1);
    int cudna = -1;
    for(int i=1;i<=N-2;i+=3){
        int odg = Pitaj(i, i+1, i+2);
        if(odg == 0) continue;
        if(i!=1){
            int odg1 = Pitaj(1, 2, i);
            if(odg1!=0) {
                cudna = i;
                break;
            }
            int odg2 = Pitaj(1, 2, i+1);
            if(odg2!=0) {
                cudna = i+1;
                break;
            }
            int odg3 = Pitaj(1, 2, i+2);
            if(odg3!=0) {
                cudna = i+2;
                break;
            }
        }
        else{
            int odg1 = Pitaj(1,2,4);
            int odg2 = Pitaj(1,3,4);
            int odg3 = Pitaj(2,3,4);
            if(odg1 == 0) cudna = 3;
            if(odg2 == 0) cudna = 2;
            if(odg3 == 0) cudna = 1;
        }
    }
    if(cudna == -1){
        if(N%3 == 1) cudna = N;
        else{
            int odg = Pitaj(1,2,N);
            if(odg !=0) cudna = N;
            else cudna = N-1;
        }
    }
    int levo[N+1]= {};
    map<pair<int, int>, bool> l;
    for(int i=1;i<=N;i++){
        if(i!=cudna){
            for(int j=i+1;j<=N;j++){
            if(i!=j && j!=cudna){
                bool uradjeno = false;
                for(int k = 1;k<=N;k++){
                    if(l[{k,i}] == true && l[{j,k}] == true){
                        l[{j,i}] = true;
                        levo[j]++;
                        uradjeno = true;
                        break;
                    }
                    else if(l[{i,k}] == true && l[{k,j}] == true){
                        l[{i,j}] = true;
                        levo[i]++;
                        uradjeno = true;
                        break;
                    }
                }
                if(!uradjeno){
               int odg = Pitaj(cudna, i, j);
               if(odg == 1){
                    levo[j]++;
                    l[{j,i}] = true;
               }
               else{
                levo[i]++;
                l[{i,j}] = true;
               }
                }
            }
            }
        }
    }
    resenje[cudna] = 1;
    for(int i=1;i<=N;i++){
        if(i!=cudna){
            resenje[i] = levo[i]+2;
        }
    }
    return resenje;
}