#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
#define ll long long
#define ld long double
#define rep(i,n) for(int i = 0; i < (int)(n); i++)
#define repo(i,n) for(int i = 1; i < (int)(n); i++)
#define pb push_back
#define mp make_pair
#define np next_permutation
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define uniq(v) v.erase(unique(v.begin(),v.end()),v.end())
#define lb(v,x) (lower_bound(v.begin(),v.end(),x)-v.begin())
#define ub(v,x) (upper_bound(v.begin(),v.end(),x)-v.begin())
const ll mod=1000000007;
//const ll mod=998244353;
const ld pi=acos(-1.0);
const ll INF = 1LL<<61;
template<class T>bool chmax(T &a, const T &b) { 
  if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) {
  if (b<a) { a=b; return 1; } return 0; }
ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll lcm(ll x, ll y) { return x / gcd(x, y) * y; }
ll jou(ll N, ll P){if(P==0) return 1;
  if(P%2==0){ll t = jou(N, P/2);return t*t % mod;
  }return (N * jou(N, P-1)) % mod;}  //jou(n,mod-2)で逆元
//intの最大値2147483647 ≒ 2×10^9
//long longの最大値9223372036854775807 ≒ 9×10^18
//'大文字'+=32;    で小文字に
//  cout << fixed << setprecision (20);   小数点以下2０桁まで
//実行時間制約2秒では２×10^8回くらいまで計算できる



int main(){
  cin.tie(0);
  ios::sync_with_stdio(false);

  int d;
  cin>>d;

  vector<ll> p(26);
  vector<pair<int,int>> hai(26);
  vector<int> zero;
  rep(i,26) {
    cin>>p[i];
    if(p[i]<=3) zero.pb(i);
    hai[i]={p[i],i};
  }

  int ze=zero.size();

  sort(all(hai));
  int t1,t2,t3;
  t1=hai[d-1].se;
  t2=hai[d-2].se;
  t3=hai[d-3].se;

  vector<vector<ll>> q(d,vector<ll>(26));
  rep(i,d) {
    rep(j,26) {
      cin>>q[i][j];
    }
  }

  ll pre=0;
  vector<int> r(26,0);
  rep(i,d-5){
    if(r[t1]>20) {
      ll sum=pre;
      auto last=r;
      sum+=q[i][t1];
      last[t1]=i+1;
      rep(k,26){
        sum-=p[k]*(i+1-last[k]);
      }
      cout << t1+1 << endl;
      pre=sum;
      r[t1]=i+1;
      continue;
    }
    if(r[t2]>25) {
      ll sum=pre;
      auto last=r;
      sum+=q[i][t2];
      last[t2]=i+1;
      rep(k,26){
        sum-=p[k]*(i+1-last[k]);
      }
      cout << t2+1 << endl;
      pre=sum;
      r[t2]=i+1;
      continue;
    }
    if(r[t3]>30) {
      ll sum=pre;
      auto last=r;
      sum+=q[i][t3];
      last[t3]=i+1;
      rep(k,26){
        sum-=p[k]*(i+1-last[k]);
      }
      cout << t3+1 << endl;
      pre=sum;
      r[t3]=i+1;
      continue;
    }
    ll ans=-INF;
    ll memo;
    rep(j,26){
      bool ok=false;
      rep(k,ze){
        if(j==zero[k]) ok=true;
      }
      if(ok) continue;
      ll sum=pre;
      auto last=r;
      sum+=q[i][j];
      last[j]=i+1;
      rep(k,26){
        sum-=p[k]*(i+1-last[k]);
      }
      if(sum>ans) {
        memo=j;
        chmax(ans,sum);
      }
    }
    cout << memo+1 << endl;
    pre=ans;
    r[memo]=i+1;
  }

  ll answer=-INF;
  ll A,B,C,D,E;
  vector<int> zen(5);
  rep(i,26){
    rep(j,26){
      rep(k,26){
        rep(l,26){
          rep(m,26){
            zen[0]=i;
            zen[1]=j;
            zen[2]=k;
            zen[3]=l;
            zen[4]=m;

            ll sum=0;
            auto last=r;
            rep(n,5){
              sum+=q[d-5+n][zen[n]];
              last[zen[n]]=d-5+n+1;
              rep(o,26){
                sum-=p[o]*(d-5+n+1-last[o]);
              }
            }

            if(sum>answer) {
              A=zen[0];
              B=zen[1];
              C=zen[2];
              D=zen[3];
              E=zen[4];
            }
            chmax(answer,sum);

          }
        }
      }
    }
  }

  cout << A+1 << endl;
  cout << B+1 << endl;
  cout << C+1 << endl;
  cout << D+1 << endl;
  cout << E+1 << endl;
  
}

Measured memory_bytes: 3772