program scoring
    implicit none
    integer(8)::D,C(26),last(26),last_sim(26),i,j,k,vcalc
    integer(8),allocatable::S(:,:),T(:),V(:)
    !入力
    read*,D,C
    allocate(S(26,D))
    allocate(T(D))
    allocate(V(D))
    read*,S
    T=0
    V=0
    last=0
    last_sim=0

    !各日にちについて貪欲に計算
    do i=1,D
        !すべての選択肢を試す
        do j=1,26
            !vcalcとlast_simを初期化
            if(i==1)then
                vcalc=V(i)
            else
                vcalc=V(i-1)
            end if
            last_sim=last

            !得点をシミュレート
            vcalc=vcalc+S(j,i)
            last_sim(j)=i
            do k=1,26
                vcalc=vcalc-C(k)*(i-last_sim(k))
            end do

            !比較していって最大値を更新したらVに格納する
            if(vcalc>=V(i).or.j==1)then
                V(i)=vcalc
                T(i)=j
            end if
        end do
        !最終的に選んだ選択肢をもとに更新
        last(T(i))=i
    end do

    !答えの出力
    do i=1,D
        print'(i0)',T(i)
    end do
end program scoring