Example #1
0
void solve()
{
    int n,m,a,b,c;
    sd(n);sd(m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            adj[i][j] = INF;
        }
        adj[i][i] = 0;
    }
    for(int i=0;i<m;i++)
    {
        sd(a);sd(b);sd(c);
        adj[a][b] = min(adj[a][b], c);
        adj[b][a] = min(adj[b][a], c);
        edges[i].F.F = a;
        edges[i].F.S = b;
        edges[i].S = c;
    }
    for(int k=0;k<n;k++)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                adj[i][j] = min(adj[i][j], adj[i][k] + adj[k][j]);
            }
        }
    }
    /*for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout<<adj[i][j]<<" ";
        }
        cout<<endl;
    }*/

    ans.clear();
    int flag = 0;
    for(int i=0;i<m;i++)
    {
        flag = 0;
        for(int j=0;j<n;j++)
        {
            for(int k=0;k<n;k++)
            {
                if(adj[j][edges[i].F.F] + adj[edges[i].F.S][k] + edges[i].S == adj[j][k])
                {
                    flag = 1;
                    if(flag==1)break;
                }
            }
            if(flag == 1)break;
        }
        if(flag == 0)
        {
            ans.PB(i);
        }
    }
    for(int i=0;i<ans.size();i++)
    {
        printf("%d\n",ans[i]);
    }
    //cout<<endl;

}
Example #2
0
int main()
{

    // unique
    {
        const VI v1 = { 1, 2, 3, 3, 4, 4, 5 };
        const VI v2 = { 5, 3, 4, 4, 2, 3, 1 };
        VI vt = { 1, 2, 3, 4, 5 };
        VI w;
        w = v1;
        sx::unique(w);
        CHECK(w == vt);

        w = v1;
        auto r = sx::unique(std::move(w));
        CHECK(r == vt);

        w = v2;
        sx::sort_unique(w);
        CHECK(w == vt);

        w = v2;
        r = sx::sort_unique(std::move(w));
        CHECK(r == vt);
    }

    // insert_at_end
    {
        VI v1 = { 1, 2, 3 };
        const VI v2 = { 4, 5, 6 };
        const VI vt = { 1, 2, 3, 4, 5, 6 };

        VI v;
        v = v1;
        sx::insert_at_end(v, v2.begin(), v2.end());
        CHECK(v == vt);

        v = v1;
        sx::insert_at_end(v, v2);
        CHECK(v == vt);
    }

    // set_difference
    {
        const VI v1 = { 1, 2, 3, 4, 5 };
        const VI v2 = { 2, 4, 5 };
        const VI vt = { 1, 3 };
        VI c(v1.size());
        sx::set_difference(v1, v2, c);
        CHECK(c == vt);

        c = sx::set_difference(v1, v2, VI(v1.size()));
        CHECK(c == vt);

        auto d = sx::set_difference(v1, v2);
        static_assert(std::is_same<decltype(d), std::vector<int> >::value, "");
        CHECK(d == vt);
    }

    // set_intersection
    {
        const VI v1 = { 1, 2, 4, 5 };
        const VI v2 = { 2, 3, 5 };
        const VI vt = { 2, 5 };
        VI c(v1.size());
        sx::set_intersection(v1, v2, c);
        CHECK(c == vt);

        c.assign(10, 10);
        c = sx::set_intersection(v1, v2, VI(v1.size()));
        CHECK(c == vt);

        auto d = sx::set_intersection(v1, v2);
        static_assert(std::is_same<decltype(d), std::vector<int> >::value, "");
        CHECK(d == vt);
    }

    // scalar_rdiv_range
    {
        const VI v1 = { 3, 4, 6 };
        const VI vt = { 4, 3, 2 };
        VI v2;
        v2 = v1;
        CHECK(vt == sx::scalar_rdiv_range(std::move(v2), 12));

        v2 = v1;
        sx::scalar_rdiv_range(v2, 12);
        CHECK(vt == v2);
    }

    // range_div_scalar
    {
        const VI v1 = { 3, 6, 9 };
        const VI vt = { 1, 2, 3 };
        VI v2;
        v2 = v1;
        CHECK(vt == sx::range_div_scalar(std::move(v2), 3));

        v2 = v1;
        sx::range_div_scalar(v2, 3);
        CHECK(vt == v2);
    }

    // range_mul_scalar
    {
        const VI v1 = { 3, 6, 9 };
        const VI vt = { 9, 18, 27 };
        VI v2;
        v2 = v1;
        CHECK(vt == sx::range_mul_scalar(std::move(v2), 3));

        v2 = v1;
        sx::range_mul_scalar(v2, 3);
        CHECK(vt == v2);
    }

    {
        const VI a = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
        const VI v = { 35, 10, 5, 100, 90, 65, 70, 90 };

        auto r = sx::searchsorted<char>(a, v);

        static_assert(
            std::is_same<std::remove_reference_t<decltype(*begin(r))>, char>::value, "");

        CHECK(r.size() == v.size());

        for (int i = 0; i < v.size(); ++i) {
            auto it = std::lower_bound(a.begin(), a.end(), v[i]);
            CHECK((it - a.begin()) == r[i]);
        }
    }

    {
        const VI a = { 10, 4, 5, 23, 54 };
        auto ds = sx::sum<double>(a);
        static_assert(std::is_same<decltype(ds), double>::value, "");
        CHECK(std::accumulate(BEGINEND(a), 0) == sx::sum(a));
        CHECK(std::accumulate(BEGINEND(a), 0) == ds);
    }
    {
        const VD a = { 10, 4, 5, 23, 54 };
        VD vt;
        for (auto d : a)
            vt.push_back(log(d));
        VD b;
        b = a;
        sx::log(b);
        VD c;
        c = a;
        auto d = sx::log(std::move(c));
        CHECK(vt == b);
        CHECK(vt == d);
    }
    {
        const VI a = { 10, 4, 5, 23, 54 };
        auto ds = sx::mean<double>(a);
        static_assert(std::is_same<decltype(ds), double>::value, "");
        CHECK((std::accumulate(BEGINEND(a), 0) / a.size()) == sx::mean(a));
        CHECK((std::accumulate(BEGINEND(a), 0) / (double)a.size()) == ds);
    }
    {
        const int x = 10;
        const int z = 12;
        for (int y = x - 1; y <= z + 1; ++y) {
            const bool qq = x <= y && y <= z;
            const bool sq = x < y && y <= z;
            const bool ss = x < y && y < z;
            CHECK(sx::leq_and_leq(x, y, z) == qq);
            CHECK(sx::less_and_leq(x, y, z) == sq);
            CHECK(sx::less_and_less(x, y, z) == ss);
        }
    }
    {
        VI a(1), b;
        CHECK(sx::isempty(a) == a.empty());
        CHECK(sx::isempty(b) == b.empty());
    }

    {
        const VI v1 = { 6, 10, 3, 2, 3, 8, 7, 4, 1, 9,
            3, 1, 3, 4, 6, 8, 10, 7, 2, 10 };
        const VI vt = { 0, 2, 2, 4, 2, 0, 2, 2, 2, 1, 3 };
        auto va = sx::bincount(std::vector<int>(100), v1);
        VI v2(50);
        sx::bincount(v2, v1);
        auto v3 = sx::bincount<int>(v1);
        CHECK(va == vt);
        CHECK(v2 == vt);
        CHECK(v3 == vt);
    }

    printf("finished.\n"); //trigger xcode console
    return test_result();
}
Example #3
0
void factorize(int a,VI &ret)
{
	ret.clear();
	for(int i=1;i<=a;i++)
		if((a % i) == 0) ret.pb(i);
}
Example #4
0
#define FOR(i,a,b) for (int i = (a); i < (b); i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(), (v).end()
#define FIT(it,v) for (__typeof((v).begin()) it = (v).begin(); it != (v).end(); it++)
#define OUT(A) cout << #A << " = "<< (A) << endl

#define present(c, e) ((c).find((e)) != (c).end())
#define cpresent(c, e) (find(all(c), (e)) != (c).end())

int case_number;
#define printg case_number++, printf("Case #%d: ",case_number), printf
#define gout case_number++, printf("Case #%d: ",case_number), cout

int N, d[10], n[10], w[10], e[10], s[10], dd[10], dp[10], ds[10];
int res;
VI h, D;
int ad[10][10], aw[10][10], ae[10][10], as[10][10];

void init() {
}

void input() {
	D.clear(); h.clear();
	
	cin >> N;
	REP(i, N){
		cin >> d[i] >> n[i] >> w[i] >> e[i] >> s[i] >> dd[i] >> dp[i] >> ds[i];
		w[i] += 1000;
		e[i] += 1000;
	}
	REP(i, N){
Example #5
0
int main()
{
	cin.sync_with_stdio(0);
	int t;
	cin>>t;
	while(t--)
	{
		int n,k,ans=MOD,idx=1,sz=1,temp=0,minm=MOD;
		cin>>n>>k;
		string str;
		cin>>str;

		FOR(i,0,n-1)
			temp = temp + (str[i] == '0'+ i%2);
		minm = min(minm, temp);
		temp = 0;
		FOR(i,0,n-1)
			temp = temp + (str[i] == '0'+ (i+1)%2);
		minm = min(minm, temp);
		//cout<<minm<<endl;
		if(k>=minm)
		{
			printf("1\n");
			continue;
		}

		VI vec;
		while(idx<n)
		{
			if(str[idx] == str[idx-1])
				sz++;
			else
			{
				if(sz>1)
					vec.PB(sz);
				sz=1;
			}
			idx++;
		}
		if(sz>1)
			vec.PB(sz);
		sort(vec.begin(), vec.end());
		reverse(vec.begin(), vec.end());

		if(k==0)
		{
			printf("%d\n", vec[0]);
			continue;
		}
		vector<PII> myVec;
		idx=0;sz=1;
		while(idx<vec.size()-1)
		{
			if(vec[idx] == vec[idx+1])
				sz++;
			else
			{
				myVec.PB(MP(vec[idx],sz));
				sz=1;
			}
			idx++;
		}
		myVec.PB(MP(vec[idx],sz));

		int start=0, end=myVec.size()-1;
		while(start<=end)
		{
			int mid = (start+end)/2, flips=0;
			FOR(i,0,mid-1)
				flips += myVec[i].second * getflips(myVec[i].first, myVec[mid].first);
			printf("%d %d\n", flips, myVec[mid].first);
			if(flips <= k)
			{
				if(ans > myVec[mid].first)
				{
					ans = myVec[mid].first;
					idx = mid;
				}
				start = mid + 1;
			}
			else
				end = mid - 1;
		}

		start = myVec[idx].first, end = 2;
		if(idx != myVec.size()-1)
			end = myVec[idx + 1].first;
		while(start<=end)
		{
			int mid = (start+end)/2, flips=0;
			FOR(i,0,idx)
				flips += myVec[i].second * getflips(myVec[i].first, mid);
			if(flips <= k)
			{
				ans = min(ans, mid);
				start = mid + 1;
			}
			else
				end = mid - 1;
		}

		printf("%d\n", ans);
	}

}
Example #6
0
	REP(i,k){
		ans.push_back(light[i].second);
		minl = min(minl, light[i].first);
	}
Example #7
0
int main(){
	int n;
	si(n);
	scanf("%s",s);
	int i = 0;
	int palLen = 0;
	l.clear();
	while(i < n){
		if(i > palLen and s[i-palLen-1] == s[i]){
			palLen += 2;
			i++;
			continue;
		}
		l.PB(palLen);
		int s = SZ(l) - 2;
		int e = s - palLen;
		int fl = 0;
		for(int j=s;j>e;j--){
			int d = j - e - 1;
			if(l[j] == d){
				palLen = d;
				fl = 1; // ***
				break;
			}
			l.PB(min(d,l[j]));
		}
		if(!fl){
			palLen = 1;
			i++;
		}
	}
	l.PB(palLen);
	int s = SZ(l) - 2;
	int e = s - (2*n + 1 - SZ(l));
	for(int i=s;i>e;i--){
		int d = i - e - 1;
		l.PB(min(d,l[i]));
	}
	for(int i=0;i<SZ(l);i++){
		if(!i) continue;
		if(i==SZ(l)-1) continue;
		if(i&1){
			total += (l[i]+1)/2;
			start[i/2 - l[i]/2] += 1;
			finish[i/2 + l[i]/2] += 1;
		   	start[i/2+1] -= 1;
			finish[i/2-1] -= 1;
		}
		else{
			total += l[i]/2;
			start[i/2 - l[i]/2] += 1;
			finish[i/2 - 1 + l[i]/2] += 1;
		   	start[i/2] -= 1;
			finish[i/2-1] -= 1;
		}
		total %= MOD;
	}
	for(int i=1;i<n;i++){
		start[i] += start[i-1];
		start[i] %= MOD;
	}
	for(int i=n-2;i>=0;i--){
		finish[i] += finish[i+1];
		finish[i] %= MOD;
	}
	for(int i=1;i<n;i++){
		finish[i] += finish[i-1];
		finish[i] %= MOD;
	}
	LL sub = 0;
	LL ans = ((total*(total-1))/2) % MOD;
	for(int i=1;i<n;i++){
		sub += (start[i] * finish[i-1]) % MOD;
		sub %= MOD;
	}
	ans -= sub;
	ans += MOD;
	ans %= MOD;
	lldout(ans);
	trace(total);
	return 0;
}
Example #8
0
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n,m,k,i,x,y,z,par[3010],vis[3010][3010]={0},flag=0,l,par1,d;
    VI v;
    vector <vector<int> > G;
    map <pair<int,PII>,int> mp;
    cin >>n>>m>>k;
    G.resize(n+1);
    for(i=0;i<m;i++)
    {
        cin >>x>>y;
        G[x].PB(y);
        G[y].PB(x);
    }
    for(i=0;i<k;i++)
    {
        cin >>x>>y>>z;
        mp[MP(x,MP(y,z))]++;
    }
    queue <pair<int,PII> > q;
    q.push(MP(1,MP(-1,0)));
    par[1]=-1;
    vis[1][0]=1;
    while(!(q.empty()))
    {
        x=q.front().F,par1=(q.front()).S.F,d=(q.front()).S.S;
        if(x==n)
        {
            flag=1;
            break;
        }
        q.pop();
        l=G[x].size();
        for(i=0;i<l;i++)
        {
            if(vis[G[x][i]]==0&&mp[MP(par1,MP(x,G[x][i]))]==0)
            {
                par[G[x][i]]=x;
                vis[G[x][i]]=1;
                q.push(MP(G[x][i],MP(x,d+1)));
            }
        }
    }
    if(flag==0)
    {
        cout <<"-1\n";
        return 0;
    }
    cout <<d<<"\n";
    x=n;
    while(x!=-1)
    {
        v.PB(x);
        x=par[x];
    }
    l=v.size();
    for(i=l-1;i>=0;i--)
        cout <<v[i]<<" ";
    cout <<"\n";
    return 0;
}
 DisjointSet (int n): n(n), rank(n, 0) {
     for (int i = 0; i < n; i++) {
         parent.push_back(i);
     }
 }
 // adjusts value of the k-th element by v (v can be +ve/inc or -ve/dec)
 void adjust(int k, int v) { for (; k < (int)ft.size(); k += LSOne(k)) ft[k] += v; }
#define CLEAR(table, v) memset(table, v, sizeof(table));
#define PRINT2(table, W, H) REP(y, H) { REP(x, W) cout<<table[y][x]<<" "; cout<<"\n"; }
#define PRINT3(table, W, H, D) REP(d, D) { REP(y, H) { REP(x, W) cout<<table[d][y][x]<<" "; cout<<"\n"; } cout<<"\n"; }
template <typename T0, typename T1> std::ostream& operator<<(std::ostream& os, const map<T0, T1>& v) { for( typename map<T0, T1>::const_iterator p = v.begin(); p!=v.end(); p++ ){os << p->first << ": " << p->second << " ";} return os; }
template <typename T0, typename T1> std::ostream& operator<<(std::ostream& os, const pair<T0, T1>& v) { os << v.first << ": " << v.second << " "; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const vector<T>& v) { for( int i = 0; i < (int)v.size(); i++ ) { os << v[i] << " "; } return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const set<T>& v) { vector<T> tmp(v.begin(), v.end()); os << tmp; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const deque<T>& v) { vector<T> tmp(v.begin(), v.end()); os << tmp; return os; }
template <typename T> std::ostream& operator<<(std::ostream& os, const vector<vector<T> >& v) { for( int i = 0; i < (int)v.size(); i++ ) { os << v[i] << endl; } return os; }

class BitwiseAnd {
	public:
	ll add;
	VVI w;
	int N, M;
	VI S;
	bool check(bool init) {
		REP(bit, 60) {
			VI one;
			REP(i, S.size()) {
				if((S[i]>>bit)&1) one.PB(i);
			}
			if(one.size()>2) return false;
			if(one.size()==2) w[one[1]][one[0]] = w[one[0]][one[1]] = 1;
			if(!init && one.size()==1 && w[one[0]][S.size()]==0) {
				add |= 1LL<<bit;
				w[one[0]][S.size()] = w[S.size()][one[0]] = 1;
			}
		}
		if(!init) {
			S.PB(add);
Example #12
0
int main()
{
	int t;
	s(t);
	while(t--)
	{
	
			
		topo.clear();
		int n;
		s(n);
		for(int i=1;i<=n;i++)
		{
			v[i].clear();
			vt[i].clear();
			value[i]=0;input[i]=0;
		}
			
		rep(i,n)
		{
			int k;s(k);
			while(k--)
			{
				int a;s(a);
				v[a].pb(i+1);
				vt[i+1].pb(a);
			}
		}
		mem(visited,0);
		rep(i,n)
		{
			if(!visited[i+1])	
				dfs1(i+1);
		}
		int co=0;
		for(int i=topo.size()-1;i>=0;i--)
		{
			if(visited[topo[i]])
				dfs2(topo[i],co++);
		}
		mem(input,0);
		for(int i=1;i<=n;i++)
		{
			for(int j=0;j<sz(v[i]);j++)
			{
				if(value[i]!=value[v[i][j]])
					input[value[v[i][j]]]++;
			}
		}
		int count=0;
		for(int i=0;i<co;i++)
		{
//			cout<<i<<" "<<input[i]<<endl;
			if(input[i]==0)
				count++;
		}
		if(count>1)
			cout<<"0"<<endl;
		else
		{
			count=0;
			for(int i=1;i<=n;i++)
			{
//				cout<<input[value[i]]<<endl;
				if(input[value[i]]==0)
					count++;
			}
			cout<<count<<endl;
		}
	}
Example #13
0
void solve(VI ans)
{
    sort(ans.begin(),ans.end());
    int sz=ans.size();

    if(sz>=fs)
    {
        return;
    }

    if(ct==n)
    {
        fs=sz;
        finn=ans;

        return;
    }

    int i,j,k,pos,ti;
    VI tv;
    VI::iterator it;


    for(i=0;i<n;++i)
    {
        if(fl[i])
        {
            continue;
        }
        ++ct;
        for(j=0;j<sz;++j)
        {
            fl[i]=0;

            pos=101;
            ti=tarr[i]+ans[j];
            for(k=j+1;k<sz;++k)
            {
                if(ans[k]==ti)
                {
                    fl[i]=1;
                    break;
                }
                else if(ans[k]>ti)
                {
                    pos=k;
                    break;
                }
            }

            if(fl[i])
            {
                tv=ans;
                solve(tv);
            }
            else
            {
                tv=ans;
                fl[i]=1;
                if(pos<101)
                {
                    it=lower_bound(tv.begin(),tv.end(),ti);
                    tv.insert(it,ti);
                    solve(tv);
                }
                else
                {
                    tv.PB(ti);
                    solve(tv);
                }

            }

            fl[i]=0;

        }

        --ct;
    }


    for(i=0;i<n;++i)
    {
        if(fl[i])
        {
            continue;
        }
        ++ct;
        for(j=1;j<sz;++j)
        {
            fl[i]=0;

            pos=101;
            ti=ans[j]-tarr[i];
            if(ti<0)
            {
                continue;
            }

            for(k=0;k<j;++k)
            {
                if(ans[k]==ti)
                {
                    fl[i]=1;
                    break;
                }
                else if(ans[k]>ti)
                {
                    pos=k;
                    break;
                }
            }

            if(fl[i])
            {
                tv=ans;
                solve(tv);
            }
            else
            {
                tv=ans;
                fl[i]=1;
                if(pos<101)
                {
                    it=lower_bound(tv.begin(),tv.end(),ti);
                    tv.insert(it,ti);
                    solve(tv);
                }
                else
                {
                    tv.PB(ti);
                    solve(tv);
                }

            }

            fl[i]=0;

        }

        --ct;
    }
}
VI find_common2(VI& va, VI& vb)
{
    VI result;
    find_common_helper2(va.begin(), va.end(), vb.begin(), vb.end(), result);
    return result;
}
Example #15
0
bool CDeck::FindValidSet(int const pIdx)
{
    if(PlayerHand[pIdx]->GetNumSelectedCards() > 0)
        return false; //should not select any

    CCardStack *Stack = PlayerHand[pIdx]->GetCardStack();

    int Idx = 0;
    for(VI vi = Stack->begin(); vi != Stack->end(); ++vi) {

        SDL_PumpEvents();
        int Rank = vi->Rank();
        int Suit = vi->Suit();

        int a = PlayerHand[pIdx]->FindCard(Rank + 1, Suit);
        int b = PlayerHand[pIdx]->FindCard(Rank + 2, Suit);
        int c = PlayerHand[pIdx]->FindCard(Rank - 1, Suit);
        int d = PlayerHand[pIdx]->FindCard(Rank - 2, Suit);

        int e[3];	//cards with same suit
        e[0] = PlayerHand[pIdx]->FindMoreSameRank(0, Rank, Suit);
        if(e[0] != -1) {

            e[1] = PlayerHand[pIdx]->FindMoreSameRank(e[0] + 1, Rank, Suit);
            if(e[1] != -1)
                e[2] = PlayerHand[pIdx]->FindMoreSameRank(e[1] + 1, Rank, Suit);
        }

        if(a != -1 && b != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(a);
            PlayerHand[pIdx]->SelectCard(b);
            return true;
        }

        if(a != -1 && c != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(a);
            PlayerHand[pIdx]->SelectCard(c);
            return true;
        }

        if(c != -1 && d != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(c);
            PlayerHand[pIdx]->SelectCard(d);
            return true;
        }

        if(e[0] != -1 && e[1] != -1) {

            PlayerHand[pIdx]->SelectCard(Idx);
            PlayerHand[pIdx]->SelectCard(e[0]);
            PlayerHand[pIdx]->SelectCard(e[1]);
            if(e[2] != -1)
                PlayerHand[pIdx]->SelectCard(e[2]);
            return true;
        }

        Idx++;
    }//end of for loop
    return false;
}
Example #16
0
VI quickSort(VI &v){
    quickSort(v,0,v.size()-1);
    return v;
}
int main() {
	//ios::sync_with_stdio(false);
	ll N;
	while(cin>>N) {
		VI ans;
		if(N==0) {
ans.PB(6);ans.PB(12);ans.PB(11);ans.PB(14);ans.PB(0);ans.PB(15);ans.PB(11);ans.PB(0);ans.PB(9);ans.PB(2);ans.PB(0);ans.PB(14);ans.PB(5);ans.PB(8);ans.PB(10);ans.PB(7);ans.PB(0);ans.PB(14);ans.PB(14);ans.PB(0);
		}
		if(N==1) {
ans.PB(14);ans.PB(0);ans.PB(0);ans.PB(3);ans.PB(8);ans.PB(11);ans.PB(7);ans.PB(2);ans.PB(15);ans.PB(9);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(6);ans.PB(14);ans.PB(6);ans.PB(0);ans.PB(7);ans.PB(3);ans.PB(12);ans.PB(8);ans.PB(3);ans.PB(15);ans.PB(2);ans.PB(13);ans.PB(12);ans.PB(15);ans.PB(8);ans.PB(9);ans.PB(12);ans.PB(3);ans.PB(2);ans.PB(2);ans.PB(15);ans.PB(8);ans.PB(6);ans.PB(13);ans.PB(14);ans.PB(0);ans.PB(3);ans.PB(4);ans.PB(14);ans.PB(13);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(9);ans.PB(13);ans.PB(14);ans.PB(10);ans.PB(3);ans.PB(15);ans.PB(12);ans.PB(13);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(13);ans.PB(3);ans.PB(0);ans.PB(8);ans.PB(13);ans.PB(14);ans.PB(14);ans.PB(11);ans.PB(0);ans.PB(14);ans.PB(11);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(6);ans.PB(10);ans.PB(15);ans.PB(13);ans.PB(15);ans.PB(0);ans.PB(15);ans.PB(15);ans.PB(13);ans.PB(3);ans.PB(11);ans.PB(12);ans.PB(0);ans.PB(3);ans.PB(11);ans.PB(2);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(3);ans.PB(10);ans.PB(0);ans.PB(8);ans.PB(15);ans.PB(1);ans.PB(4);ans.PB(0);ans.PB(15);ans.PB(3);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(8);ans.PB(1);ans.PB(15);ans.PB(15);ans.PB(5);ans.PB(12);ans.PB(15);ans.PB(4);ans.PB(8);ans.PB(8);ans.PB(0);ans.PB(4);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(13);ans.PB(8);ans.PB(3);ans.PB(12);ans.PB(13);ans.PB(2);ans.PB(9);ans.PB(12);ans.PB(15);ans.PB(13);ans.PB(9);ans.PB(0);ans.PB(3);ans.PB(12);ans.PB(10);ans.PB(8);ans.PB(5);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(5);ans.PB(2);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(8);ans.PB(0);ans.PB(3);ans.PB(2);ans.PB(11);ans.PB(12);ans.PB(0);ans.PB(15);ans.PB(2);ans.PB(14);ans.PB(8);ans.PB(14);ans.PB(0);ans.PB(2);ans.PB(4);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(11);ans.PB(14);ans.PB(11);ans.PB(11);ans.PB(13);ans.PB(7);ans.PB(2);ans.PB(11);ans.PB(7);ans.PB(12);ans.PB(2);ans.PB(15);ans.PB(8);ans.PB(4);ans.PB(7);ans.PB(6);ans.PB(0);ans.PB(15);ans.PB(6);ans.PB(4);ans.PB(9);ans.PB(11);ans.PB(0);ans.PB(6);ans.PB(8);ans.PB(3);ans.PB(12);ans.PB(15);ans.PB(12);ans.PB(3);ans.PB(9);ans.PB(11);ans.PB(2);
		}
		if(N==2) {
ans.PB(8);ans.PB(8);ans.PB(3);ans.PB(14);ans.PB(11);ans.PB(11);ans.PB(13);ans.PB(12);ans.PB(13);ans.PB(14);ans.PB(15);ans.PB(13);ans.PB(14);ans.PB(14);ans.PB(9);ans.PB(12);ans.PB(2);ans.PB(0);ans.PB(12);ans.PB(8);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(4);ans.PB(11);ans.PB(3);ans.PB(15);ans.PB(10);ans.PB(1);ans.PB(11);ans.PB(0);ans.PB(2);ans.PB(14);ans.PB(1);ans.PB(9);ans.PB(10);ans.PB(9);ans.PB(13);ans.PB(2);ans.PB(3);ans.PB(13);ans.PB(2);ans.PB(8);ans.PB(6);ans.PB(13);ans.PB(0);ans.PB(6);ans.PB(13);ans.PB(0);ans.PB(6);ans.PB(5);ans.PB(4);ans.PB(7);ans.PB(14);ans.PB(7);ans.PB(10);ans.PB(12);ans.PB(2);ans.PB(11);ans.PB(13);ans.PB(9);ans.PB(4);ans.PB(0);ans.PB(3);ans.PB(9);ans.PB(12);ans.PB(14);ans.PB(11);ans.PB(2);ans.PB(13);ans.PB(9);ans.PB(6);ans.PB(4);ans.PB(15);ans.PB(5);ans.PB(1);ans.PB(15);ans.PB(9);ans.PB(10);ans.PB(7);ans.PB(3);ans.PB(3);ans.PB(12);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(0);ans.PB(5);ans.PB(4);ans.PB(13);ans.PB(5);ans.PB(2);ans.PB(11);ans.PB(4);ans.PB(3);ans.PB(5);ans.PB(8);ans.PB(12);ans.PB(9);ans.PB(12);ans.PB(3);ans.PB(15);ans.PB(13);ans.PB(5);ans.PB(6);ans.PB(13);ans.PB(3);ans.PB(15);ans.PB(13);ans.PB(11);ans.PB(0);ans.PB(2);ans.PB(2);ans.PB(4);ans.PB(11);ans.PB(4);ans.PB(0);ans.PB(12);ans.PB(9);ans.PB(7);ans.PB(9);ans.PB(0);ans.PB(4);ans.PB(2);ans.PB(13);ans.PB(14);ans.PB(2);ans.PB(1);ans.PB(2);ans.PB(0);ans.PB(12);ans.PB(3);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(3);ans.PB(13);ans.PB(7);ans.PB(0);ans.PB(0);ans.PB(0);ans.PB(14);ans.PB(0);ans.PB(12);ans.PB(4);ans.PB(5);ans.PB(3);ans.PB(13);ans.PB(12);ans.PB(2);ans.PB(0);ans.PB(5);ans.PB(15);ans.PB(13);ans.PB(13);ans.PB(5);ans.PB(0);ans.PB(2);ans.PB(2);ans.PB(0);ans.PB(8);ans.PB(2);ans.PB(12);ans.PB(12);ans.PB(8);ans.PB(0);ans.PB(15);ans.PB(1);ans.PB(14);ans.PB(15);ans.PB(15);ans.PB(9);ans.PB(11);ans.PB(15);ans.PB(13);ans.PB(13);ans.PB(2);ans.PB(0);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(14);ans.PB(1);ans.PB(3);ans.PB(0);ans.PB(13);ans.PB(3);ans.PB(2);ans.PB(5);ans.PB(0);ans.PB(0);ans.PB(0);ans.PB(7);ans.PB(2);ans.PB(13);ans.PB(9);
		}
		if(N==3) {
ans.PB(0);ans.PB(14);ans.PB(12);ans.PB(7);ans.PB(0);ans.PB(6);ans.PB(9);ans.PB(3);ans.PB(14);ans.PB(1);ans.PB(12);ans.PB(14);ans.PB(2);ans.PB(12);ans.PB(14);ans.PB(8);ans.PB(7);ans.PB(14);ans.PB(0);ans.PB(5);ans.PB(7);ans.PB(2);ans.PB(12);ans.PB(1);ans.PB(3);ans.PB(0);ans.PB(8);ans.PB(11);ans.PB(14);ans.PB(12);ans.PB(0);ans.PB(3);ans.PB(1);ans.PB(6);ans.PB(9);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(0);ans.PB(3);ans.PB(13);ans.PB(4);ans.PB(3);ans.PB(5);ans.PB(14);ans.PB(4);ans.PB(9);ans.PB(6);ans.PB(0);ans.PB(14);ans.PB(9);ans.PB(12);ans.PB(1);ans.PB(1);ans.PB(11);ans.PB(12);ans.PB(15);ans.PB(12);ans.PB(1);ans.PB(5);ans.PB(15);ans.PB(3);ans.PB(9);ans.PB(2);ans.PB(4);ans.PB(14);ans.PB(3);ans.PB(5);ans.PB(0);ans.PB(1);ans.PB(12);ans.PB(12);ans.PB(0);ans.PB(2);ans.PB(13);ans.PB(2);ans.PB(8);ans.PB(14);ans.PB(1);ans.PB(6);ans.PB(0);ans.PB(1);ans.PB(3);ans.PB(14);ans.PB(13);ans.PB(2);ans.PB(14);ans.PB(13);ans.PB(2);ans.PB(1);ans.PB(15);ans.PB(7);ans.PB(0);ans.PB(2);ans.PB(13);ans.PB(7);ans.PB(2);ans.PB(0);ans.PB(3);ans.PB(9);ans.PB(6);ans.PB(8);ans.PB(12);ans.PB(12);ans.PB(2);ans.PB(6);ans.PB(14);ans.PB(13);ans.PB(14);ans.PB(2);ans.PB(15);ans.PB(2);ans.PB(9);ans.PB(2);ans.PB(8);ans.PB(10);ans.PB(12);ans.PB(3);ans.PB(4);ans.PB(9);ans.PB(11);ans.PB(3);ans.PB(14);ans.PB(1);ans.PB(3);ans.PB(6);ans.PB(15);ans.PB(6);ans.PB(3);ans.PB(14);ans.PB(0);ans.PB(3);ans.PB(12);ans.PB(10);ans.PB(2);ans.PB(2);ans.PB(2);ans.PB(14);ans.PB(13);ans.PB(7);ans.PB(12);ans.PB(10);ans.PB(0);ans.PB(5);ans.PB(9);ans.PB(2);ans.PB(14);ans.PB(12);ans.PB(13);ans.PB(11);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(0);ans.PB(7);ans.PB(1);ans.PB(8);ans.PB(3);ans.PB(10);ans.PB(10);ans.PB(2);ans.PB(2);ans.PB(2);ans.PB(5);ans.PB(9);ans.PB(15);ans.PB(13);ans.PB(2);ans.PB(12);ans.PB(13);ans.PB(12);ans.PB(0);ans.PB(15);ans.PB(12);ans.PB(8);ans.PB(13);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(13);ans.PB(9);ans.PB(13);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(6);ans.PB(6);ans.PB(7);ans.PB(0);ans.PB(1);ans.PB(8);ans.PB(0);ans.PB(12);ans.PB(13);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(14);ans.PB(15);
		}
		if(N==4) {
ans.PB(12);ans.PB(0);ans.PB(2);ans.PB(14);ans.PB(4);ans.PB(14);ans.PB(0);ans.PB(7);ans.PB(12);ans.PB(4);ans.PB(5);ans.PB(14);ans.PB(2);ans.PB(9);ans.PB(6);ans.PB(5);ans.PB(4);ans.PB(5);ans.PB(4);ans.PB(15);ans.PB(12);ans.PB(15);ans.PB(14);ans.PB(14);ans.PB(2);ans.PB(4);ans.PB(9);ans.PB(13);ans.PB(9);ans.PB(0);ans.PB(8);ans.PB(9);ans.PB(12);ans.PB(3);ans.PB(8);ans.PB(10);ans.PB(7);ans.PB(12);ans.PB(15);ans.PB(10);ans.PB(12);ans.PB(3);ans.PB(3);ans.PB(3);ans.PB(14);ans.PB(3);ans.PB(4);ans.PB(13);ans.PB(0);ans.PB(0);ans.PB(13);ans.PB(8);ans.PB(3);ans.PB(12);ans.PB(0);ans.PB(10);ans.PB(14);ans.PB(14);ans.PB(15);ans.PB(13);ans.PB(15);ans.PB(4);ans.PB(0);ans.PB(13);ans.PB(13);ans.PB(15);ans.PB(8);ans.PB(9);ans.PB(8);ans.PB(2);ans.PB(11);ans.PB(5);ans.PB(11);ans.PB(2);ans.PB(2);ans.PB(0);ans.PB(2);ans.PB(12);ans.PB(0);ans.PB(2);ans.PB(3);ans.PB(3);ans.PB(2);ans.PB(3);ans.PB(2);ans.PB(2);ans.PB(3);ans.PB(0);ans.PB(0);ans.PB(7);ans.PB(11);ans.PB(9);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(9);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(0);ans.PB(10);ans.PB(10);ans.PB(8);ans.PB(15);ans.PB(5);ans.PB(15);ans.PB(7);ans.PB(11);ans.PB(11);ans.PB(0);ans.PB(14);ans.PB(14);ans.PB(8);ans.PB(9);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(6);ans.PB(1);ans.PB(11);ans.PB(6);ans.PB(3);ans.PB(8);ans.PB(3);ans.PB(7);ans.PB(13);ans.PB(0);ans.PB(0);ans.PB(12);ans.PB(2);ans.PB(14);ans.PB(15);ans.PB(5);ans.PB(7);ans.PB(0);ans.PB(12);ans.PB(2);ans.PB(9);ans.PB(3);ans.PB(7);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(12);ans.PB(2);ans.PB(8);ans.PB(8);ans.PB(0);ans.PB(9);
		}
		if(N==5) {
ans.PB(9);ans.PB(13);ans.PB(9);ans.PB(11);ans.PB(13);ans.PB(1);ans.PB(2);ans.PB(12);ans.PB(7);ans.PB(6);ans.PB(13);ans.PB(14);ans.PB(0);ans.PB(15);ans.PB(2);ans.PB(9);ans.PB(13);ans.PB(8);ans.PB(12);ans.PB(11);ans.PB(14);ans.PB(3);ans.PB(1);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(11);ans.PB(7);ans.PB(5);ans.PB(11);ans.PB(8);ans.PB(2);ans.PB(13);ans.PB(8);ans.PB(13);ans.PB(4);ans.PB(3);ans.PB(9);ans.PB(13);ans.PB(9);ans.PB(0);ans.PB(6);ans.PB(2);ans.PB(2);ans.PB(15);ans.PB(1);ans.PB(9);ans.PB(15);ans.PB(1);ans.PB(0);ans.PB(2);ans.PB(3);ans.PB(9);ans.PB(11);ans.PB(10);ans.PB(11);ans.PB(1);ans.PB(13);ans.PB(1);ans.PB(14);ans.PB(13);ans.PB(13);ans.PB(14);ans.PB(3);ans.PB(2);ans.PB(11);ans.PB(3);ans.PB(1);ans.PB(15);ans.PB(4);ans.PB(1);ans.PB(3);ans.PB(8);ans.PB(0);ans.PB(11);ans.PB(12);ans.PB(15);ans.PB(10);ans.PB(13);ans.PB(0);ans.PB(6);ans.PB(0);ans.PB(15);ans.PB(6);ans.PB(4);ans.PB(8);ans.PB(4);ans.PB(2);ans.PB(2);ans.PB(2);ans.PB(9);ans.PB(14);ans.PB(8);ans.PB(15);ans.PB(15);ans.PB(15);ans.PB(13);ans.PB(7);ans.PB(14);ans.PB(14);ans.PB(0);ans.PB(14);ans.PB(13);ans.PB(11);ans.PB(12);ans.PB(2);ans.PB(13);ans.PB(10);ans.PB(13);ans.PB(4);ans.PB(12);ans.PB(11);ans.PB(6);ans.PB(12);ans.PB(10);ans.PB(4);ans.PB(9);ans.PB(1);ans.PB(1);ans.PB(2);ans.PB(7);ans.PB(15);ans.PB(5);ans.PB(3);ans.PB(1);ans.PB(7);ans.PB(12);ans.PB(12);ans.PB(3);ans.PB(7);ans.PB(8);ans.PB(0);ans.PB(8);ans.PB(15);ans.PB(10);ans.PB(12);ans.PB(15);ans.PB(3);ans.PB(9);ans.PB(15);ans.PB(5);ans.PB(7);ans.PB(0);ans.PB(0);ans.PB(4);ans.PB(6);ans.PB(0);ans.PB(3);ans.PB(0);ans.PB(14);
		}
		if(N==6) {
ans.PB(14);ans.PB(0);ans.PB(0);ans.PB(3);ans.PB(8);ans.PB(11);ans.PB(7);ans.PB(2);ans.PB(15);ans.PB(9);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(6);ans.PB(14);ans.PB(6);ans.PB(0);ans.PB(7);ans.PB(3);ans.PB(12);ans.PB(8);ans.PB(3);ans.PB(15);ans.PB(2);ans.PB(13);ans.PB(12);ans.PB(15);ans.PB(8);ans.PB(9);ans.PB(12);ans.PB(3);ans.PB(2);ans.PB(2);ans.PB(15);ans.PB(8);ans.PB(6);ans.PB(13);ans.PB(14);ans.PB(0);ans.PB(3);ans.PB(4);ans.PB(14);ans.PB(13);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(9);ans.PB(13);ans.PB(14);ans.PB(10);ans.PB(3);ans.PB(15);ans.PB(12);ans.PB(13);ans.PB(12);ans.PB(0);ans.PB(0);ans.PB(13);ans.PB(3);ans.PB(0);ans.PB(8);ans.PB(13);ans.PB(14);ans.PB(14);ans.PB(11);ans.PB(0);ans.PB(14);ans.PB(11);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(6);ans.PB(10);ans.PB(15);ans.PB(13);ans.PB(15);ans.PB(0);ans.PB(15);ans.PB(15);ans.PB(13);ans.PB(3);ans.PB(11);ans.PB(12);ans.PB(0);ans.PB(3);ans.PB(11);ans.PB(2);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(3);ans.PB(10);ans.PB(0);ans.PB(8);ans.PB(15);ans.PB(1);ans.PB(4);ans.PB(0);ans.PB(15);ans.PB(3);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(8);ans.PB(1);ans.PB(15);ans.PB(15);ans.PB(5);ans.PB(12);ans.PB(15);ans.PB(4);ans.PB(8);ans.PB(8);ans.PB(0);ans.PB(4);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(13);ans.PB(8);ans.PB(3);ans.PB(12);ans.PB(13);ans.PB(2);ans.PB(9);ans.PB(12);ans.PB(15);ans.PB(13);ans.PB(9);ans.PB(0);ans.PB(3);ans.PB(12);ans.PB(10);ans.PB(8);ans.PB(5);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(5);ans.PB(2);ans.PB(0);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(8);
		}
		if(N==7) {
ans.PB(0);ans.PB(11);ans.PB(5);ans.PB(14);ans.PB(0);ans.PB(0);ans.PB(7);ans.PB(1);ans.PB(1);ans.PB(1);ans.PB(1);ans.PB(15);ans.PB(14);ans.PB(2);ans.PB(12);ans.PB(13);ans.PB(0);ans.PB(14);ans.PB(0);ans.PB(11);ans.PB(13);ans.PB(6);ans.PB(0);ans.PB(4);ans.PB(3);ans.PB(2);ans.PB(7);ans.PB(9);ans.PB(12);ans.PB(8);ans.PB(3);ans.PB(13);ans.PB(10);ans.PB(0);ans.PB(3);ans.PB(0);ans.PB(11);ans.PB(2);ans.PB(0);ans.PB(8);ans.PB(0);ans.PB(0);ans.PB(15);ans.PB(14);ans.PB(9);ans.PB(9);ans.PB(11);ans.PB(14);ans.PB(2);ans.PB(1);ans.PB(0);ans.PB(13);ans.PB(3);ans.PB(5);ans.PB(8);ans.PB(2);ans.PB(15);ans.PB(2);ans.PB(0);ans.PB(7);ans.PB(0);ans.PB(0);ans.PB(10);ans.PB(3);ans.PB(8);ans.PB(14);ans.PB(9);ans.PB(0);ans.PB(2);ans.PB(8);ans.PB(3);ans.PB(14);ans.PB(13);ans.PB(0);ans.PB(11);ans.PB(12);ans.PB(11);ans.PB(15);ans.PB(8);ans.PB(1);ans.PB(1);ans.PB(7);ans.PB(3);ans.PB(2);ans.PB(7);ans.PB(0);ans.PB(5);ans.PB(2);ans.PB(11);ans.PB(14);ans.PB(6);ans.PB(13);ans.PB(2);ans.PB(12);ans.PB(0);ans.PB(3);ans.PB(0);ans.PB(2);ans.PB(7);ans.PB(13);ans.PB(13);ans.PB(8);ans.PB(0);ans.PB(8);ans.PB(0);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(12);ans.PB(2);ans.PB(2);ans.PB(10);ans.PB(9);ans.PB(14);ans.PB(12);ans.PB(9);ans.PB(11);ans.PB(0);ans.PB(2);ans.PB(1);ans.PB(1);ans.PB(5);ans.PB(0);ans.PB(2);ans.PB(14);ans.PB(9);ans.PB(13);ans.PB(5);ans.PB(11);ans.PB(13);ans.PB(4);ans.PB(9);ans.PB(1);ans.PB(8);ans.PB(14);ans.PB(3);ans.PB(2);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(1);ans.PB(11);ans.PB(11);ans.PB(13);ans.PB(2);ans.PB(14);ans.PB(3);ans.PB(12);ans.PB(0);ans.PB(8);ans.PB(5);ans.PB(0);ans.PB(12);ans.PB(12);ans.PB(9);ans.PB(13);ans.PB(14);ans.PB(14);ans.PB(2);ans.PB(12);ans.PB(12);ans.PB(7);ans.PB(3);ans.PB(7);ans.PB(0);ans.PB(8);ans.PB(0);ans.PB(14);ans.PB(8);ans.PB(11);ans.PB(3);ans.PB(3);ans.PB(2);ans.PB(1);ans.PB(0);ans.PB(7);ans.PB(8);ans.PB(13);ans.PB(2);
		}
		if(N==8) {
ans.PB(2);ans.PB(7);ans.PB(12);ans.PB(0);ans.PB(10);ans.PB(15);ans.PB(2);ans.PB(14);ans.PB(13);ans.PB(11);ans.PB(11);ans.PB(0);ans.PB(6);ans.PB(3);ans.PB(13);ans.PB(11);ans.PB(4);ans.PB(0);ans.PB(9);ans.PB(3);ans.PB(15);ans.PB(14);ans.PB(3);ans.PB(0);ans.PB(3);ans.PB(0);ans.PB(1);ans.PB(2);ans.PB(14);ans.PB(11);ans.PB(2);ans.PB(0);ans.PB(1);ans.PB(5);ans.PB(3);ans.PB(1);ans.PB(15);ans.PB(0);ans.PB(15);ans.PB(13);ans.PB(11);ans.PB(9);ans.PB(2);ans.PB(15);ans.PB(9);ans.PB(12);ans.PB(12);ans.PB(6);ans.PB(11);ans.PB(12);ans.PB(14);ans.PB(10);ans.PB(2);ans.PB(1);ans.PB(3);ans.PB(9);ans.PB(15);ans.PB(10);ans.PB(12);ans.PB(8);ans.PB(2);ans.PB(10);ans.PB(3);ans.PB(3);ans.PB(6);ans.PB(13);ans.PB(1);ans.PB(0);ans.PB(12);ans.PB(8);ans.PB(8);ans.PB(2);ans.PB(0);ans.PB(4);ans.PB(15);ans.PB(4);ans.PB(12);ans.PB(2);ans.PB(13);ans.PB(13);ans.PB(3);ans.PB(12);ans.PB(2);ans.PB(1);ans.PB(3);ans.PB(15);ans.PB(13);ans.PB(2);ans.PB(0);ans.PB(14);ans.PB(15);ans.PB(2);ans.PB(0);ans.PB(7);ans.PB(12);ans.PB(3);ans.PB(13);ans.PB(15);ans.PB(14);ans.PB(1);ans.PB(0);ans.PB(0);ans.PB(1);ans.PB(11);ans.PB(7);ans.PB(2);ans.PB(15);ans.PB(0);ans.PB(3);ans.PB(9);ans.PB(7);ans.PB(8);ans.PB(0);ans.PB(0);ans.PB(3);ans.PB(13);ans.PB(13);ans.PB(3);ans.PB(0);ans.PB(10);ans.PB(12);ans.PB(7);ans.PB(0);ans.PB(11);ans.PB(0);ans.PB(12);ans.PB(11);ans.PB(4);ans.PB(1);ans.PB(3);ans.PB(9);ans.PB(15);ans.PB(0);ans.PB(3);ans.PB(3);ans.PB(2);ans.PB(6);ans.PB(8);ans.PB(3);ans.PB(13);ans.PB(14);ans.PB(13);ans.PB(0);ans.PB(15);ans.PB(5);ans.PB(10);ans.PB(12);ans.PB(0);ans.PB(1);ans.PB(4);ans.PB(2);ans.PB(3);ans.PB(15);ans.PB(9);ans.PB(0);ans.PB(14);ans.PB(13);ans.PB(11);ans.PB(12);ans.PB(11);ans.PB(9);ans.PB(1);ans.PB(1);ans.PB(3);ans.PB(13);ans.PB(14);ans.PB(13);ans.PB(2);ans.PB(13);ans.PB(8);ans.PB(2);ans.PB(11);ans.PB(6);ans.PB(1);ans.PB(14);ans.PB(4);ans.PB(9);ans.PB(0);ans.PB(7);ans.PB(8);ans.PB(15);ans.PB(3);ans.PB(0);ans.PB(4);ans.PB(15);ans.PB(11);ans.PB(0);ans.PB(2);ans.PB(11);ans.PB(1);ans.PB(11);ans.PB(9);ans.PB(11);ans.PB(4);ans.PB(14);ans.PB(5);ans.PB(0);ans.PB(14);ans.PB(14);ans.PB(1);
		}
		if(N==9) {
ans.PB(4);ans.PB(3);ans.PB(10);ans.PB(8);ans.PB(2);ans.PB(3);ans.PB(11);ans.PB(3);ans.PB(5);ans.PB(11);ans.PB(7);ans.PB(10);ans.PB(11);ans.PB(11);ans.PB(5);ans.PB(10);ans.PB(9);ans.PB(8);ans.PB(0);ans.PB(0);ans.PB(9);ans.PB(5);ans.PB(1);ans.PB(3);ans.PB(0);ans.PB(15);ans.PB(7);ans.PB(3);ans.PB(9);ans.PB(3);ans.PB(13);ans.PB(11);ans.PB(0);ans.PB(0);ans.PB(1);ans.PB(13);ans.PB(3);ans.PB(15);ans.PB(12);ans.PB(9);ans.PB(8);ans.PB(14);ans.PB(15);ans.PB(15);ans.PB(11);ans.PB(13);ans.PB(7);ans.PB(1);ans.PB(1);ans.PB(13);ans.PB(7);ans.PB(15);ans.PB(3);ans.PB(0);ans.PB(12);ans.PB(13);ans.PB(0);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(9);ans.PB(15);ans.PB(3);ans.PB(12);ans.PB(2);ans.PB(2);ans.PB(0);ans.PB(2);ans.PB(15);ans.PB(8);ans.PB(12);ans.PB(2);ans.PB(9);ans.PB(9);ans.PB(8);ans.PB(14);ans.PB(0);ans.PB(8);ans.PB(15);ans.PB(3);ans.PB(8);ans.PB(4);ans.PB(6);ans.PB(12);ans.PB(3);ans.PB(0);ans.PB(14);ans.PB(0);ans.PB(1);ans.PB(8);ans.PB(0);ans.PB(1);ans.PB(9);ans.PB(14);ans.PB(11);ans.PB(3);ans.PB(15);ans.PB(11);ans.PB(0);ans.PB(8);ans.PB(13);ans.PB(4);ans.PB(3);ans.PB(1);ans.PB(12);ans.PB(14);ans.PB(2);ans.PB(0);ans.PB(14);ans.PB(2);ans.PB(13);ans.PB(0);ans.PB(2);ans.PB(8);ans.PB(7);ans.PB(2);ans.PB(12);ans.PB(14);ans.PB(3);ans.PB(11);ans.PB(12);ans.PB(12);ans.PB(9);ans.PB(9);ans.PB(15);ans.PB(9);ans.PB(14);ans.PB(11);ans.PB(0);ans.PB(12);ans.PB(0);ans.PB(2);ans.PB(2);ans.PB(1);ans.PB(3);ans.PB(11);ans.PB(0);ans.PB(6);ans.PB(14);ans.PB(3);ans.PB(11);ans.PB(6);ans.PB(10);ans.PB(2);ans.PB(0);ans.PB(3);ans.PB(4);ans.PB(15);ans.PB(5);ans.PB(3);ans.PB(14);ans.PB(4);ans.PB(12);ans.PB(14);ans.PB(1);ans.PB(0);ans.PB(4);ans.PB(11);ans.PB(4);ans.PB(0);ans.PB(3);ans.PB(1);ans.PB(15);ans.PB(0);ans.PB(13);ans.PB(14);ans.PB(11);ans.PB(14);ans.PB(11);ans.PB(15);ans.PB(5);ans.PB(15);ans.PB(9);ans.PB(12);ans.PB(15);ans.PB(12);ans.PB(11);ans.PB(2);ans.PB(5);ans.PB(12);ans.PB(1);ans.PB(10);ans.PB(7);ans.PB(0);ans.PB(7);ans.PB(11);ans.PB(6);ans.PB(12);ans.PB(8);ans.PB(8);ans.PB(0);ans.PB(15);ans.PB(10);ans.PB(15);ans.PB(7);ans.PB(5);ans.PB(15);ans.PB(12);ans.PB(12);ans.PB(6);
		}
		
		if(N==10) {
ans.PB(4);ans.PB(15);ans.PB(0);ans.PB(3);ans.PB(2);ans.PB(12);ans.PB(9);ans.PB(13);ans.PB(14);ans.PB(13);ans.PB(2);ans.PB(13);ans.PB(4);ans.PB(4);ans.PB(2);ans.PB(2);ans.PB(0);ans.PB(12);ans.PB(12);ans.PB(15);ans.PB(4);ans.PB(15);ans.PB(12);ans.PB(2);ans.PB(6);ans.PB(12);ans.PB(3);ans.PB(6);ans.PB(4);ans.PB(11);ans.PB(7);ans.PB(15);ans.PB(3);ans.PB(13);ans.PB(12);ans.PB(14);ans.PB(15);ans.PB(15);ans.PB(0);ans.PB(12);ans.PB(3);ans.PB(12);ans.PB(3);ans.PB(11);ans.PB(3);ans.PB(0);ans.PB(13);ans.PB(15);ans.PB(15);ans.PB(4);ans.PB(13);ans.PB(8);ans.PB(6);ans.PB(15);ans.PB(9);ans.PB(2);ans.PB(0);ans.PB(1);ans.PB(3);ans.PB(15);ans.PB(3);ans.PB(13);ans.PB(13);ans.PB(3);ans.PB(10);ans.PB(3);ans.PB(3);ans.PB(2);ans.PB(0);ans.PB(2);ans.PB(14);ans.PB(9);ans.PB(13);ans.PB(12);ans.PB(5);ans.PB(0);ans.PB(1);ans.PB(0);ans.PB(8);ans.PB(11);ans.PB(14);ans.PB(8);ans.PB(15);ans.PB(8);ans.PB(15);ans.PB(12);ans.PB(3);ans.PB(14);ans.PB(4);ans.PB(13);ans.PB(14);ans.PB(8);ans.PB(7);ans.PB(14);ans.PB(0);ans.PB(14);ans.PB(12);ans.PB(7);ans.PB(3);ans.PB(8);ans.PB(2);ans.PB(15);ans.PB(0);ans.PB(1);ans.PB(2);ans.PB(0);ans.PB(0);ans.PB(3);ans.PB(2);ans.PB(9);ans.PB(0);ans.PB(0);ans.PB(12);ans.PB(2);ans.PB(2);ans.PB(11);ans.PB(7);ans.PB(8);ans.PB(15);ans.PB(0);ans.PB(0);ans.PB(2);ans.PB(11);ans.PB(0);ans.PB(2);ans.PB(12);ans.PB(2);ans.PB(1);
		}
		
		REP(i, ans.size()) cout<<ans[i]<<endl;
	}
	
	return 0;
}
Example #18
0
void print_r(VI v){
  for(int i=0;i<v.size();i++){
    cout<<v[i]<<", ";
  }
}
Example #19
0
VI Out( int u, int b )
{
  if (V[u].size() <= b)
  {
    if (V[u].size() == 0)
      return VI(1, u);
    else if (V[u].size() == 1)
      return Out(V[u][0], b);
    else
    {
      VI T1 = Out(V[u][0], 1), T2 = Out(V[u][1], 1);
      for (int i = 0; i < T2.size(); i++)
        T1.PB(T2[i]);
      return T1;
    }
  }

  int Ans = (V[u].size() - b + 1) / 2;
  for (int i = 0; i < V[u].size(); i++)
    Ans += dfs2(V[u][i], 1);

  if (((V[u].size() + b) & 1) == 0 || Ans == D[u][b])
  {
    VI Res;
    int Curr = -1, Last = -1;
    for (int i = 0; i < V[u].size(); i++)
    {
      VI Temp = Out(V[u][i], 1);
      if (i == V[u].size() - 2)
        Last = Temp[0];
      if (i < b)
        for (int k = 0; k < Temp.size(); k++)
          Res.PB(Temp[k]);
      else if (Curr == -1)
        Curr = Temp[0];
      else
        Result.PB(MP(Curr, Temp[0])), Curr = -1;
    }
    if (Curr != -1 && Last != -1)
      Result.PB(MP(Curr, Last));

    return Res;
  }

  else
  {
    int Ans = (V[u].size() - b + 1) / 2;
    for (int i = 0; i < V[u].size(); i++)
      Ans += dfs2(V[u][i], 1);
    for (int i = 0; i < V[u].size(); i++)
      if (Ans - dfs2(V[u][i], 1) + dfs2(V[u][i], 2) == D[u][b])
      {
        VI Res;
        VI Temp = Out(V[u][i], 2);
        Res.PB(Temp[1]);
        int Curr = -1;
        for (int j = 0; j < V[u].size(); j++)
        {
          VI Temp = Out(V[u][j], 1);
          if (j < b - 1)
            Res.PB(Temp[0]);
          else if (Curr == -1)
            Curr = Temp[0];
          else
            Result.PB(MP(Curr, Temp[0])), Curr = -1;
        }
        return Res;
      }
  }
}
Example #20
0
inline void pvi(VI a){FORSZ(i,a) printf("%d%c", a[i], i == a.size() - 1 ? '\n' : ' ');}