// Original C++ solution (slower):
#include<iostream>

#include<vector>

#include<algorithm>

#include<cstdlib>

using namespace std;





static const int D=365;

static const int ntype=26;



class Contest{

public:

    Contest(){

        last=0;

    }

    int s[D+1];

    int c;

    int last;

};



Contest contest[27];



void Input(){

    int d;

    cin>>d;

    for(int i=1;i<=ntype;++i){

        int t;

        cin>>t;

        contest[i].c=t;

    }

    for(int day=1;day<=D;++day){

        for(int type=1;type<=ntype;++type){

            int t;

            cin>>t;

            contest[type].s[day]=t;

        }

    }

}



int v[D+1];



int gene[50][D+1];

int next_gene[50][D+1];

int elete[D+1];

vector<pair<double,int>> cumfreq;



void randGene(int i){

    for(int day=1;day<=D;++day){

        gene[i][day]=rand()%26+1;

    }

}



void Init(){

    for(int i=0;i<50;++i){

        randGene(i);

    }

}



void Greedy(){

    vector<int> l(ntype+1,0);

      int score=0;

    for(int d=1;d<=D;++d){

        for(int i=1;i<=ntype;++i) score-=contest[i].c*(d-l[i]);

        int temp=score;

        int t=-1;

        for(int i=1;i<=ntype;++i){

            int k=contest[i].s[d]+contest[i].c*(d-l[i])+score;

            if(k>temp){

                temp=k;

                t=i;

            }

        }

        gene[0][d]=t;

        l[t]=d;

        score+=temp;

    }

}



void decoding(int i){

    v[0]=0;

    for(int day=1;day<=D;++day){

        v[day]=0;

        int type=gene[i][day];

        v[day]+=contest[type].s[day];

        contest[type].last=day;

        for(int t=1;t<=ntype;++t){

            v[day]-=contest[t].c*(day-contest[t].last);

        }

        v[day]+=v[day-1];

    }

    v[D]=v[D]<0?1:v[D];

    cumfreq.push_back(make_pair((double)v[D],i));   

}



void CrossOver(int ni, int ci, int cj){

    for(int i=1;i<=D;++i){

        double p=rand()/RAND_MAX;

        if(p>0.5) next_gene[ni][i]=gene[ci][i];

        else next_gene[ni][i]=gene[cj][i];

    }

}



void Mutation(int i){

    /*cout<<i<<endl;

    reverse(next_gene+i+1,next_gene+i+D+1);

    cout<<"mutation"<<endl;*/

    int tgene[D+1];

    for(int d=1;d<=D;++d) tgene[d]=next_gene[i][d];

    for(int d=1;d<=D;++d) next_gene[i][d]=tgene[D-d+1];

}



void calcCumFreq(){

    double sum=0;

    for(int i=0;i<50;++i){

        sum+=cumfreq[i].first;

    }

    for(int i=0;i<50;++i){

        cumfreq[i].first/=sum;

    }

    sort(cumfreq.begin(),cumfreq.end());

    for(int i=0;i<49;++i){

        cumfreq[i+1].first+=cumfreq[i].first;

    }

}



int Select(){

    double a=(double)rand()/RAND_MAX;

    for(int i=0;i<49;++i){

        if(cumfreq[i+1].first>a) return cumfreq[i].second;

    }

    return cumfreq[49].second;

}



void GA(){

    static const double crossRate=0.3;

    static const double mutationRate=0.05;  

    for(int i=0;i<50;++i){

        int pi=Select();

        double crossrand=(double)rand()/RAND_MAX;

        if(crossrand<crossRate){

            int pj=Select();

            CrossOver(i,pi,pj);

        }

        else{

            for(int j=1;j<=D;++j) next_gene[i][j]=gene[pi][j];

        }

        double murand=(double)rand()/RAND_MAX;

        if(murand<mutationRate){

            Mutation(i);

        }

    }

    cumfreq.resize(0);

    for(int i=0;i<50;++i){

        for(int j=1;j<=D;++j){

            gene[i][j]=next_gene[i][j];

        }

        decoding(i);

    }

    calcCumFreq();

}



int main(){

    srand(700);

    Input();

    Init();

    Greedy();

    /*

    for(int i=0;i<50;++i){

        decoding(i);

    }

    calcCumFreq();

    for(int i=0;i<3000;++i){

        GA();

    }

    for(int i=0;i<50;++i){

        decoding(i);

    }

    calcCumFreq();

    sort(cumfreq.begin(),cumfreq.end());

    int e=cumfreq[49].second;

    

    for(int i=1;i<=D;++i) cout<<gene[e][i]<<endl;  

    */

   for(int i=1;i<=D;++i) cout<<gene[0][i]<<endl;

} 

// Optimized solution to the same problem (faster):
#include<iostream>

#include<vector>

#include<algorithm>

#include<cstdlib>

using namespace std;

#define INF 1e9



static const int D=365;

static const int ntype=26;



class Contest{

public:

    Contest(){

        last=0;

    }

    int s[D+1];

    int c;

    int last;

};



Contest contest[ntype+1];



void Input(){

    int d;

    cin>>d;

    for(int i=1;i<=ntype;++i){

        int t;

        cin>>t;

        contest[i].c=t;

    }

    for(int day=1;day<=D;++day){

        for(int type=1;type<=ntype;++type){

            int t;

            cin>>t;

            contest[type].s[day]=t;

        }

    }

}





void Greedy(){

    vector<int> l(ntype+1,0);

    for(int d=1;d<=D;++d){

        long long score=0;

        for(int i=1;i<=ntype;++i) score-=contest[i].c*(d-l[i]);

        long long temp=-INF;

        int t=-1;

        for(int i=1;i<=ntype;++i){

            long long k=contest[i].s[d]+contest[i].c*(d-l[i])+score;

            if(k>temp){

                temp=k;

                t=i;

            }

        }

        l[t]=d;

        cout<<t<<endl;

    }

}

int main(){

    Input();

    Greedy();

};

// Fastest known solution for this problem: