#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(n); i++)
#define rep2(i,x,n) for(int i=x; i<(n); i++)
#define all(n) begin(n),end(n)
struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star;
const long long INF = numeric_limits<long long>::max();
int main(){
    int D;
    cin>>D;
    vector<int> c(26);
    rep(i,26){
        int tmp=0;
        cin>>tmp;
        c[i]=tmp;
    }
    vector<vector<int>> s(D,vector<int>(26));
    vector<int> last(26,0);//最後にiのテストをやってからの経過日数とする
    rep(i,D){
        rep(j,26){
            int stmp=0;
            cin>>stmp;
            s[i][j]=stmp;
        }
    }
    vector<int> ans;
    //減少量が一番少なくなるように割り当てる
    //作戦.「(テストiをやった時の増加量-残りのテストに対する減少量)が一番多いテストをやる」

    rep(i,D){
        //i日目にやるやつを決める
        int testnum=0;
        long long  minusmax=0;
        long long minusmaxtmp=-100000000000;
        rep(j,26){
            //テストjをやった時の満足度の増減量を調べる
            minusmax=s[i][j];
            rep(k,26){
                if(k!=j){
                    minusmax+=-1*c[k]*(last[k]+1);//もしやらなかったらなので1足す
                }
            }
            if(minusmax>minusmaxtmp){
                testnum=j;
                minusmaxtmp=minusmax;
            }
        }
        //i日目にtestnum番のテストをやることに決めたので
        //testnum番以外のlastを1増やす,testnum番は0に戻る
        rep(j,26){
            if(j!=testnum){
                last[j]++;
            }else{
                last[j]=0;
            }
        }
        ans.push_back(testnum+1);

    }
    //i日目の満足度を計算する
    long long  manzokudo=0;//sは0indexにつき
    rep(m,26){
        last[m]=0;//lastも初期化
    }
    rep(i,D){
        //i日目にやるやつはans[i] 1-index
        manzokudo+=s[i][ans[i]-1];//sは0indexにつき


        rep(j,26){
            //テストans[i]-1以外はやってないので満足度下がる
            if(j!=ans[i]-1)
            manzokudo-=c[j]*(last[j]+1);//やってないとしたので1ひいとく
        }
        //i日目にans[i]-1番のテストをやることに決めたので
        //ans[i]-1番以外のlastを1増やす,ans[i]-1番は0に戻る
        rep(j,26){
            if(j!=ans[i]-1){
                last[j]++;
            }else{
                last[j]=0;
            }
        }
    //    cout << manzokudo << endl;
    }

    //貪欲法における満足度が出た。
    int donyokumax=manzokudo;

    //cout << "donnyoku" << endl;
    //cout << donyokumax << endl;
    rep(i,D){
    //    cout << i << "i日目:" << ans[i] << endl;
    }

    //ランダムで適当な日程のテストをXに変える(何回やる？)
    //
    vector<int> d,q;
    std::mt19937 mt{ std::random_device{}() };
    uniform_int_distribution<int> dist(1, D);
    uniform_int_distribution<int> dist2(1, 26);
    int day=dist(mt);
    d.push_back(day);
    int test=dist2(mt);
    q.push_back(test);
    vector<int> anscp(D);
    rep(i,D){
        anscp[i]=ans[i]; //変更前の日程を保存しとく
    }
    bool flag =false;//改善されたかフラグ
   //i番目の日程変更を行った時の満足度を計算する
    rep(i,1){
        manzokudo=0;//満足度を初期化
        ans[d[i]-1]=q[i];
        //d[i]日目のテストをq[i]にすり替えて再計算
        rep(m,26){
            last[m]=0;//lastも初期化
        }
        rep(l,D){
        //l日目にやるやつはans[l]
        manzokudo+=s[l][ans[l]-1];//sは0indexにつき
        
        rep(j,26){
            //テストans[l]-1以外はやってないので満足度下がる
            if(j!=ans[l]-1){
                manzokudo+=c[j]*(last[j]+1)*-1;//やってないとしたので1たしとく
            }
        }
        //i日目にans[i]-1番のテストをやることに決めたとみせかけて
        //iがdのどれか(d[k]としよう)と一致していた場合はans[i]-1番の代わりにq[k]番のテストをやることになるので
        //ans[i]-1番以外のlastを1増やす,ans[i]-1番は0に戻るとみせかけて
        //その場合に限りq[k]-1番以外のlastを1増やす,q[k]-1番は0に戻る

        rep(j,26){
            if(j!=ans[l]-1){
                last[j]++;
            }else{
                last[j]=0;
            }
        }
        if(donyokumax<manzokudo){
            flag=true;//改善されたよ
        }
        
    }

    //cout << manzokudo << endl;
    }

    if(flag){
        rep(i,D){
            cout << ans[i] << endl;
        }
    }else{
        rep(i,D){
            cout << anscp[i] << endl;
        }
    }

    //cout << manzokudo << endl;

    return 0;
}

Measured memory_bytes: 3716