#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <cmath>
#include <queue>
#include <set>
#include <cassert>
#include <random>

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

using namespace std;
typedef long long int ll;
const int INF = 1000000000;
const double PI = acos(-1);
const ll mod = 1000000007;

int D;
int c[26];
int s[365][26];
int last[26] = {};  // 各コンテストを最後に開催した日
int t[365] = { 0 };  // 各日に開催するコンテスト
int M;
vector<int> d;
vector<int> q;
vector<int> ds[26];  // 各コンテストの開催日

void Setds() {
    rep(i, D) {
        ds[t[i] - 1].push_back(i+1);
    }
}

int CalcScore() {
    int res = 0;
    int last_[26] = { 0 };
    rep(i, D) {
        res += s[i][t[i] - 1];
        last_[t[i] - 1] = i + 1;
        rep(j, 26) {
            res -= c[j] * (i+1 - last_[j]);
        }
    }
    return res;
}

int Disatisfaction(int c, int pre, int d, int post) {
    return c * ((post - pre)* (post - pre - 1) - (d - pre) * (d - pre - 1) - (post - d) * (post - d - 1)) / 2;
}

int Disatisfaction2(int c, int pre, int d, int post) {
    return c * (- (post - pre) * (post - pre - 1) + (d - pre) * (d - pre - 1) + (post - d) * (post - d - 1)) / 2;
}

void Query(int d, int q) {
    t[d - 1] = q;
}

//int Query(int d, int q) {
//    int res = 0;
//    int old = t[d - 1];  // 前回値保存
//    t[d - 1] = q;  // 入れ替え
//
//    // 満足度上昇分
//    res -= s[d - 1][old - 1];
//    res += s[d - 1][q - 1];
//
//    // oldについて満足度減少分
//    int pre = 0;
//    int post = D + 1;
//    for (int i = 1; i < ds[old-1].size(); i++) {
//        if (ds[old - 1][i] == d) {
//            pre = ds[old - 1][i - 1];
//            if (i != ds[old - 1].size() - 1) {
//                post = ds[old - 1][i+1];
//            }
//        }
//    }
//    res -= Disatisfaction(c[old - 1], pre, d, post);
//
//    // qについて満足度減少分
//    pre = 0;
//    post = D + 1;
//    for (int i = 1; i < ds[q - 1].size(); i++) {
//        if (ds[q - 1][i] == d) {
//            pre = ds[q - 1][i - 1];
//            if (i != ds[q - 1].size() - 1) {
//                post = ds[q - 1][i + 1];
//            }
//        }
//    }
//    res -= Disatisfaction2(c[q - 1], pre, d, post);
//    return res;
//}

int main()
{
    cin >> D;
    rep(i, 26) cin >> c[i];
    rep(i, D) rep(j, 26) cin >> s[i][j];

    rep(i, D) {
        int max_v = -INF;
        rep(j, 26) {
            int v = 0;
            v += s[i][j];
            rep(k, 26) {
                if (k == j) continue;
                v -= c[k] * (i + 1 - last[k]);
            }
            if (v > max_v) {
                max_v = v;
                t[i] = j + 1;
            }
        }
        last[t[i] - 1] = i + 1;
    }
    int score = CalcScore();
    
    // 乱数生成
    std::mt19937 mt{ std::random_device{}() };
    std::uniform_int_distribution<int> d_ran(1, D);
    std::uniform_int_distribution<int> q_ran(1, 26);
    rep(i, 10) {
        int d = d_ran(mt);
        int q = q_ran(mt);
        int old = t[d - 1];
        Query(d, q);
        int new_score = CalcScore();
        if (new_score < score) {
            t[d - 1] = old;
        }
        else {
            score = new_score;
        }
    }
    rep(i, D) cout << t[i] << endl;
    return 0;
}


Measured memory_bytes: 3688