#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 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;
}

// 貪欲法により解を求め、結果をtに格納
void Greedy() {
    rep(i, D) {  // 各日に対して
        int max_v = -INF;
        rep(j, 26) {  // 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;
    }
}

// d日目のコンテストをqに変更する関数
void ModifyQuery(int d, int q) {
    t[d - 1] = q;
}

// d1日目とd2日目のコンテストを入れ替える関数
void SwapQuery(int d1, int d2) {
    int tmp = t[d1 - 1];
    t[d1 - 1] = t[d2 - 1];
    t[d2 - 1] = tmp;
}

// 焼きなまし法に用いる現在温度Tを求める関数
double CalcTemperature(double time) {
    const double T0 = 100.0;
    const double T1 = 10.0;
    return pow(T0, (1 - time)) * pow(T1, time);
}

// 焼きなまし法により変形の採否を決定する関数
bool Annealing(int delta, double T) {
    if (delta >= 0) {
        return true;
    }
    else {
        const double e = 2.71828;
        double prob = pow(e, (delta / T));
        srand((unsigned)time(NULL));
        if ((double)rand() / RAND_MAX < prob) {
            return true;
        }
    }
    return false;
}

int main()
{
    clock_t start = clock();  // タイマ設定
    cin >> D;
    rep(i, 26) cin >> c[i];
    rep(i, D) rep(j, 26) cin >> s[i][j];

    // 貪欲法
    Greedy();
    int score = CalcScore();  // 貪欲法の解のスコアを計算

    // 乱数生成
    std::mt19937 mt{ std::random_device{}() };
    std::uniform_int_distribution<int> switch_ran(1, 2);  // for switch modify query and swap query
    std::uniform_int_distribution<int> d_ran(1, D);       // for day (modify query)
    std::uniform_int_distribution<int> q_ran(1, 26);      // for contest (modify query)
    std::uniform_int_distribution<int> d1_ran(1, D - 1);  // for day1 (swap query)
    std::uniform_int_distribution<int> dist_ran(1, 13);   // for dist between day1 and day2 (swap query)

    const double TL = 1.95;  // 制限時間
    while (true) {
        clock_t end = clock();  // タイマ取得
        double time = (double)(end - start) / CLOCKS_PER_SEC;  // 経過時間計算
        double time_norm = time / TL;  // for annealing
        if (time > TL) break;  // 制限時間が近づいていたらbreak

        // クエリ選択
        int sw = switch_ran(mt);
        if (sw == 1) {  // modify query
            int d = d_ran(mt);
            int q = q_ran(mt);
            int old = t[d - 1];
            ModifyQuery(d, q);
            int new_score = CalcScore();

            // 焼きなまし法
            double T = CalcTemperature(time_norm);
            bool is_adopt = Annealing(new_score - score, T);
            if (is_adopt) score = new_score;  // 採用の場合スコアを更新
            else t[d - 1] = old;              // 不採用の場合元に戻す
        }
        else {  // swap query
            int d1 = d1_ran(mt);
            int dist = dist_ran(mt);
            int d2 = min(D, d1 + dist);
            int old1 = t[d1 - 1];
            int old2 = t[d2 - 1];
            SwapQuery(d1, d2);
            int new_score = CalcScore();

            // 焼きなまし法
            double T = CalcTemperature(time_norm);
            bool is_adopt = Annealing(new_score - score, T);
            if (is_adopt) score = new_score;          // 採用の場合スコアを更新
            else t[d1 - 1] = old1; t[d2 - 1] = old2;  // 不採用の場合元に戻す
        }
    }

    // 結果出力
    rep(i, D) cout << t[i] << endl;
    return 0;
}


Measured memory_bytes: 4364