#include <bits/stdc++.h>
using namespace std;

#define rep(i,n) for(int i=0;i<(n);i++)

typedef long long ll;

#define REP(i,n) for(ll i=0;i<(ll)(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=a;i<=(ll)(b);i++)
#define FORD(i,a,b) for(ll i=a;i>=(ll)(b);i--)
//定数
#define INF 1000000000 //10^9:極めて大きい値,∞
//略記
#define PB push_back //vectorヘの挿入
#define MP make_pair //pairのコンストラクタ
#define F first //pairの一つ目の要素
#define S second //pairの二つ目の要素

vector<int> c(26);
vector<vector<int>> s(365 ,vector<int>(26));
vector<vector<int>> last(365 ,vector<int>(26));
int D;

int calc(int d){
    int k=18;
    int ret=1;
    ll maxv=-INF;
    rep(j,26){
        ll v=s[d][j]+c[j]*(d+1-last[d][j]);
        rep(i,k) v-=c[j]*k;
        if(v>maxv){
            maxv=v;
            ret=j+1;
        }
    }
    return ret;
}

int solve(int dd, int q, ll *v){
//        int dd,q;
//        cin>>dd>>q;
        q--;
        int j=0;
        while(last[dd-1][j]!=dd || j>=26) j++;
        if(j==26){ 
            cout<<"error"<<endl;
            return 1;
        }
        *v-=s[dd-1][j];
        for(int d=dd-1;d<D;d++){ 
            if(last[d][j]==dd){
                *v+=c[j]*(d+1-last[d][j]);
                last[d][j]=(d==0? 0 : last[d-1][j]);
                *v-=c[j]*(d+1-last[d][j]);
            }
            else{ 
                break;
            }
        }
        
        *v+=s[dd-1][q];
        int before=last[dd-1][q];
        for(int d=dd-1;d<D;d++){ 
            if(last[d][q]==before){ 
                *v+=c[q]*(d+1-last[d][q]);
                last[d][q]=dd;
                *v-=c[q]*(d+1-last[d][q]);
            }
            else{ 
                break;
            }
        }
//        cout<<v<<endl;
    return 0;
}

int main(){
    cin>>D;
    rep(i,26){ 
        cin>>c[i];
    }
    rep(d,D) rep(j,26) cin>>s[d][j];
    vector<int> T(365);
    ll v=0;
    vector<int> kaisai_bi(26);
    int ans=18398+s[1][16];
    rep(j,26){
        if(j==16)continue;
        else if(j==0)ans-=c[j]*(2-1);
        else ans-=c[j]*(2-0);
    }

    rep(d,D) {
//        cin>>t;
        T[d]=calc(d);
//        cout<<t<<endl;
        int t=T[d]-1;
        v+=s[d][t];
        kaisai_bi[t]=d+1;
        rep(j,26) last[d][j]=kaisai_bi[j];
        rep(j,26){ 
            v-=c[j]*(d+1-last[d][j]);
            }
    }
//    cout<<v<<endl;

    int m;
//    cin>>m;
m=100000;
    rep(i,m){
        int spec=rand()%2;
        int dd,q;
        dd=rand()%365+1;
        q=rand()%26+1;
        ll prev=v;
        int ret;
        if(spec==1){ // 一点変更
            ret=solve(dd, q, &v);
            if(ret) return 0;
            if(v>prev){
                T[dd-1]=q;
//                cout<<"一点変更"<<endl;
            }
            else{
                ret=solve(dd, T[dd-1], &v);
            }
        }
        else{ // 二点スワップ
            int dist=(rand()%2==0? 1 : -1)*(rand()%16+1);
            int dd2=dd+dist;
            if(dd2<=0 || dd2>365) dd2=dd-dist;
            ret=solve(dd, T[dd2-1], &v);
            if(ret) return 0;
            ret=solve(dd2, T[dd-1], &v);
            if(v>prev){
                int temp=T[dd-1];
                T[dd-1]=T[dd2-1];
                T[dd2-1]=temp;
//                cout<<"二点スワップ"<<endl;
            }
            else{
                ret=solve(dd2, T[dd2-1], &v);
                if(ret) return 0;
                ret=solve(dd, T[dd-1], &v);
                if(ret) return 0;
            }
        }
//        cout<<v<<endl;
    }
    rep(d,D)cout<<T[d]<<endl;
    return 0;
}


Measured memory_bytes: 3736