#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int INF = 1e9;
const ll LINF = 1e18;
inline ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; }
inline ll lcm(ll a, ll b) { return a / gcd(a, b)*b; }
template<class S,class T> ostream& operator << (ostream& out,const pair<S,T>& o){ out << "(" << o.first << "," << o.second << ")"; return out; }
template<class T> ostream& operator << (ostream& out,const vector<T>& V){ for(int i = 0; i < V.size(); i++){ out << V[i]; if(i!=V.size()-1) out << " ";} return out; }
template<class T> ostream& operator << (ostream& out,const vector<vector<T> >& Mat){ for(int i = 0; i < Mat.size(); i++) { if(i != 0) out << endl; out << Mat[i];} return out; }
template<class S,class T> ostream& operator << (ostream& out,const map<S,T>& mp){ out << "{ "; for(auto it = mp.begin(); it != mp.end(); it++){ out << it->first << ":" << it->second; if(mp.size()-1 != distance(mp.begin(),it)) out << ", "; } out << " }"; return out; }
template<typename T>vector<T> make_v(size_t a){return vector<T>(a);}
template<typename T,typename... Ts>auto make_v(size_t a,Ts... ts){return vector<decltype(make_v<T>(ts...))>(a,make_v<T>(ts...));}
template<typename T,typename V> typename enable_if<is_class<T>::value==0>::type fill_v(T &t,const V &v){t=v;}
template<typename T,typename V> typename enable_if<is_class<T>::value!=0>::type fill_v(T &t,const V &v){for(auto &e:t) fill_v(e,v);}
/*
 <url:>
 問題文============================================================
 =================================================================
 解説=============================================================
 ================================================================
 */

int D;
vector<ll> c(27);
vector<vector<ll>> s;
vector<int> last;
set<int> st[27],rst[27];
ll sum_s;

void update_happy(ll& happy,int d,int t){
    happy += s[d][t];
    last[t] = d;
    for(int i = 1; i <= 26;i++){
        happy -= c[i]*(d-last[i]);
    }
    return;
}
ll check_happy(ll happy,int d,int t){
    int pre_d = last[t];
    happy += s[d][t];
    
    last[t] = d;
    for(int i = 1; i <= 26;i++){
        happy -= c[i]*(d-last[i]);
    }
    last[t] = pre_d;
    
    return happy;
}
ll calc_happy(vector<int>& sol){
    ll happy = 0;
    for(int d = 1; d <= D; d++){
        update_happy(happy, d, sol[d-1]);
    }
    return happy;
}

void read_parameters(){
    cin >> D;
    for(int t = 1; t <= 26; t++){
        cin >> c[t];
    }
    s.resize(D+1,vector<ll>(27));
    for(int d = 1; d <= D; d++){
        for(int t = 1; t <= 26;t++){
            cin >> s[d][t];
        }
    }
    last.resize(27);
}

vector<int> greedy(){
    ll happy = 0;
    vector<int> sol;
    for(int d = 1; d <= D; d++){
        ll max_v = numeric_limits<ll>::min();
        int target_t = -1;
        
        for(int t = 1; t <= 26; t++){
            ll tmp_happy = check_happy(happy, d, t);
            if(tmp_happy > max_v){
                max_v = tmp_happy;
                target_t = t;
            }
        }
        
        sol.emplace_back(target_t);
    }
    return sol;
}


void set_init(vector<int>& sol){
    for(int t = 1; t <= 26; t++){
        st[t].emplace(0);
        rst[t].emplace(-0);
        
        st[t].emplace(D+1);
        rst[t].emplace(-(D+1));
    }
    for(int d = 1; d <= D;d++){
        st[sol[d-1]].emplace(d);
        rst[sol[d-1]].emplace(-d);
    }
    
    sum_s = 0;
    for(int d = 1; d <= D; d++){
        sum_s += s[d][sol[d-1]];
    }
}

// d日目に行うコンテストのタイプをqに変更
void query(ll& happy,int d,int q,vector<int>& sol){
    ll mod_happy = 0;
    
    if(sol[d-1] == q) return ;

    mod_happy -= s[d][sol[d-1]];
    mod_happy += s[d][q];
    
    ll t = -1;
    
    {
        t = sol[d-1];
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);

        {
            ll diff = d-ld-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
            
        }
        
        {
            st[t].erase(d);
            rst[t].erase(-d);
        }
    }
    
    {
        t = q;
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);
        
        {
            ll diff = rd-ld-1;
            mod_happy += c[t]*diff*(diff+1)/2;
        }
        
        {
            ll diff = d-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
        
        {
            st[t].emplace(d);
            rst[t].emplace(-d);
        }
    }
    
    happy += mod_happy;
    sol[d-1] = q;
}

// d日目に行うコンテストのタイプをqに状況が良くなるのであれば変更a
void update_query(ll& happy,int d,int q,vector<int>& sol){
    ll mod_happy = 0;
    
    if(sol[d-1] == q) return;

    mod_happy -= s[d][sol[d-1]];
    mod_happy += s[d][q];
    
    ll t = -1;
    
    {
        t = sol[d-1];
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);

        {
            ll diff = d-ld-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
            
        }
    }
    
    {
        t = q;
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);
        
        {
            ll diff = rd-ld-1;
            mod_happy += c[t]*diff*(diff+1)/2;
        }
        
        {
            ll diff = d-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
    }
    
    if(mod_happy > 0){
        
        happy += mod_happy;
        {
            t = sol[d-1];
            st[t].erase(d);
            rst[t].erase(-d);
        }
        {
            t = q;
            st[t].emplace(d);
            rst[t].emplace(-d);
        }
        sol[d-1] = q;
    }
    return;
}

// d日目に行うコンテストのタイプをqに変更
ll show_query(int d,int q,vector<int>& sol){
    ll mod_happy = 0;
    
    if(sol[d-1] == q) return mod_happy;

    mod_happy -= s[d][sol[d-1]];
    mod_happy += s[d][q];
    
    ll t = -1;
    
    {
        t = sol[d-1];
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);

        {
            ll diff = d-ld-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;

            mod_happy += c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
            
        }
    }
    
    {
        t = q;
        ll ld = -(*rst[t].upper_bound(-d));
        ll rd = *st[t].upper_bound(d);
        
        {
            ll diff = rd-ld-1;
            mod_happy += c[t]*diff*(diff+1)/2;
        }
        
        {
            ll diff = d-ld-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
        {
            ll diff = rd-d-1;
            mod_happy -= c[t]*diff*(diff+1)/2;
        }
    }
    return mod_happy;
}

template<class Type>
Type solve(Type res = Type()){
    srand((unsigned int)time(NULL));
    
    auto start = chrono::system_clock::now();
    
    read_parameters();
    // greedy();
    
    auto sol = greedy();
    ll happy = calc_happy(sol);
    set_init(sol);
    
    auto end = chrono::system_clock::now();
    double time = static_cast<double>(chrono::duration_cast<chrono::microseconds>(end - start).count());

    
    int counter = 0;
    while(time < 1950){
        counter++;
        
        if(counter%10000==0){
            int d = rand()%D+1;
            int q = rand()%26+1;
            query(happy,d, q, sol);
        }else{
            ll max_mod_happy = numeric_limits<ll>::min();
            int maxd = -1, maxq = -1;
            for(int d = 1; d <= D; d++){
                for(int q = 1; q <= 26; q++){
                    ll mod_happy = show_query(d, q, sol);
                    if(mod_happy > max_mod_happy){
                        max_mod_happy = mod_happy;
                        maxd = d;
                        maxq = q;
                    }
                }
            }
            if(maxd != -1){
                update_query(happy, maxd, maxq, sol);
            }
        }
        
        end = chrono::system_clock::now();
        time = static_cast<double>(chrono::duration_cast<chrono::microseconds>(end - start).count());
    }
    
    for(auto ans:sol){
        cout << ans << endl;
    }
    return res;
}
int main(void) {
    cin.tie(0); ios_base::sync_with_stdio(false);
    solve(0);
    return 0;
}


Measured memory_bytes: 3764