#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<unordered_map>
#include<climits>
#include<cstdlib>
#include<cmath>
#include<string>
#include<iomanip>
#include<bitset>
#include<list>
#include<chrono>
#include<random>
#include<iterator>

/*
　　　　　　　　　　　　　　　　　　　　　__,.二ﾆ==-　　ﾆ．、_.　　　　　　　　　　　　　　　　　　　　　
　　　　　　　　　　　　　　　　.,.．‐　⌒　　　　　　　　　　　　｀`'ァ-ﾆ、.　　　　　　　　　　　　　　　
　　　　　　　　　　　　　　ィ'´.　　　　　　　　　　　　　　　　　　　　　　´丶.、　　　　　　　　　　　　
　　　　　　　　　　　.,ィ'´　　　　　　　　　　　　　　　　　　　　　　　　　　　　`.ｘ、..　　　　　　　　　
　..　　　　　　　　／.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　､＼.　　　　　　　　
　　　　　　　　.ﾝ′.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　￢`""冖ｰミト．
　　　　　　　,ｒ′.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　.ﾍ、　　　　`
　　　　　　ﾂ　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　`、....　　　
　　　　　./´　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　ﾍ　　　　
　.....　　/.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　.〉.　　　
　　　´/..　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　.ｌ　　　
　　　ｨ　　　　　　　　　　　　　　　　　　　　　　　　　．　　　　　　　　　　　　　　　　　　　　　ｆ..　　
　..　.ｆ　,d.　　　　　　　　　　　　　　　　　l　　　′　」　　,.　　　　　　　　　　　　　ﾄ　　　　　！　　
　.　〕../.ｆ..　　　　　　　　　　　　　　　　　′　．.　　|　　.｝　　　　　　　　　　　　　|　　　　　　|.　　
　　.!./..f..　　　　　　　　　　　　　　　　　/　　!－　ナ丶п冖т　　　　ﾉｰ-　．　〕　　　　　　|.　　
　　|ﾒ　|　　　　　　　　　　　　　　　｜　j　　　　　　,　　┌．　|〈.　　　л`.　　　/|..　　　　　┤,..　
　...「...｜.　　　　　　|　　´　　　　　　l.　|　　j.Ｌ......ｭ.Ｌ＿└ヽ_｜Y.　　ﾒムｗ　ょ　|　　j.:　　　|　￣
　.　　｜.　　　　　　　　　　　　　　　т〕＜.ィ冖T冖..　г‐　`､　`,　/┴￢..г￣|..　.′　　｜　　
　...　　|　　　　　　　　．..　　　　　　　),|..　｀　　ﾘ　「_ﾉ.||　　　　`　V　　|!｛,｢ll　´.」.　　　　　卜　　
　.　　｜.」　　　　　　′　　　　　　　　ヽ　　　　└++〃..　　　　　　　　ﾙｗｆ　　ｶz′.　　　｜.　　
　　　　|..〕　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　｢　　　　　．|　　　
　　　　.ｌ.|.　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　′.　　　　　|　　　
　.　　　.〕..　　　　　　　　　　　　　　　`!　　　　　　　　_...．.ｰ：''　　　　　　　　　｣　´　　　　λ.　　
　　　　_｢.　　　　,　　　　　　　　　　　　┐_,、｀~‐''"´　　　　　　　　　　　　　　　　ィ　　　.､　ﾍ、　
　　　　ｆ　　　　　　:_＿..,二ュ．-i―'''^~´　　　　　　　　　　　　　　　　　　　　　　　､＼イ　ヘ．`ｘ
　.　　/　　　　　　｛　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　j　　　　.~^
　　､/　　　　　　　'ｔ..　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　丿..　　　　　
　.../.　　　　　　　,x┐..　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　∠∫　　　　　
　:^.　　　　　　　/　　￣冖ー=zzｭ┌ｰ―--　　　∟,二...＿.　　　　　　　_,､．-ｰ.'l+~.　.l｀．　　　　
　.　　　　　　　У.　　　　　　　　　⌒冖‐-=．_..　l｢.｢　　　　　　´￣｣了　　.,､-''＾　　　〉　ヽ_　　　
　　　　　　　_/.　　　　　　　　　　　　　　　　　　￣~'.ー-=．、＿,..usｧ.ｰ''"　　　　　　｛　　　＼´　
　　　　　　_ヰl'￢―-　､_　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　（　　　　.＼
*/

using namespace std;

using ll = long long int;
using ull = unsigned long long int;

ll const MOD = 1000000007;
ll const INF = (long long int)1 << 61;

ll mypow(ll x,ll n,ll mod = MOD){
    ll ret = 1;
    while(n > 0){
        if(n&1){
            ret = (ret*x)%mod;
        }
        x = (x*x)%mod;
        n >>= 1;
    }
    return ret;
}

ll mygcd(ll a,ll b){
    if(b == 0)return a;
    return mygcd(b,a%b);
}

ll twoPow(ll shiftNum){
    return (1LL << (shiftNum - 1));
}

void downTemp(double &tmp, const double rate){
    tmp *= rate;
}

int main(){
    auto start = std::chrono::system_clock::now();

    cin.tie(0);
    ios::sync_with_stdio(false);
 
    double temp = 1.0;
    double rate = 0.95;

    int d;
    cin >> d;

    vector<int> c(26);
    for(auto &x: c){
        cin >> x;
    }

    vector<vector<int>> s(d,vector<int>(26));

    for(int i = 0; i < d; i++){
        for(int j = 0; j < 26; j++){
            cin >> s[i][j];
        }
    }

    vector<int> ans(d);
    vector<int> used(26,-1);
    vector<set<int>> st(26);
    for(int i = 0; i < 26; i++){
        st[i].insert(-1);
        st[i].insert(d);
    }

    int score = 0;
    for(int i = 0; i < d; i++){
        ans[i] = (i%26);
        used[i%26] = i;
        st[i%26].insert(i);
        score += s[i][i%26];
        for(int j = 0; j < 26; j++){
            score -= c[j]*(i - used[j]);
        }
    }

    auto end = std::chrono::system_clock::now();
    auto dur = end - start;
    auto msec = chrono::duration_cast<chrono::milliseconds>(dur).count();

    std::random_device rnd;     // 非決定的な乱数生成器を生成
    std::mt19937 mt(rnd());     //  メルセンヌ・ツイスタの32ビット版、引数は初期シード値
    std::uniform_int_distribution<> rand1(0, d - 1);        // [0, 99] 範囲の一様乱数
    std::uniform_int_distribution<> rand2(0, 25);
    std::uniform_real_distribution<> rand3(0, 1);

    while(msec < 1950){
        int idx = rand1(mt);
        int nextd = rand2(mt);
        double ptemp = rand3(mt);

        if(ans[idx] == nextd){
            end = std::chrono::system_clock::now();
            dur = end - start;
            msec = chrono::duration_cast<chrono::milliseconds>(dur).count();
            continue;
        }

        int pred = ans[idx];
        ans[idx] = nextd;
        int cscore = 0;

        cscore = score + s[idx][nextd] - s[idx][pred];

        auto itr = st[pred].find(idx);
        set<int>::const_reverse_iterator ritr(itr);

        itr++;
        ritr++;

        cscore += (((*itr) - idx - 1)*((*itr) - idx)/2)*c[pred] + ((idx - (*ritr) -1)*(idx - (*ritr))/2)*c[pred] - (((*itr) - (*ritr) - 1)*((*itr) - (*ritr))/2)*c[pred];

        st[nextd].insert(idx);

        auto itr2 = st[nextd].find(idx);
        set<int>::const_reverse_iterator ritr2(itr2);

        itr2++;
        ritr2++;

        cscore -= (((*itr2) - idx - 1)*((*itr2) - idx)/2)*c[nextd] + ((idx - (*ritr2) -1)*(idx - (*ritr2))/2)*c[nextd] - (((*itr2) - (*ritr2) - 1)*((*itr) - (*ritr))/2)*c[nextd];

        if(cscore > score){
            score = cscore;
            downTemp(temp,rate);
            st[pred].erase(idx);
        }else{
            if(temp >= ptemp){
                score = cscore;
                downTemp(temp,rate);
                st[pred].erase(idx);
            }else{
                ans[idx] = pred;
                downTemp(temp,rate);
                st[nextd].erase(idx);
            }
        }

        end = std::chrono::system_clock::now();
        dur = end - start;
        msec = chrono::duration_cast<chrono::milliseconds>(dur).count();
    }

    for(int i = 0; i < d; i++){
        cout << ans[i] + 1 << endl;
    }

    cerr << max(0,score + 1000000) << endl;

    return 0;
}

Measured memory_bytes: 3672