#include #include #include using namespace std; long N; int K; long A[1010],B[1010]; vectorsucc(vectorF) { long nxt=-9e18; for(int i=0;iret(F.begin()+1,F.end()); ret.push_back(nxt); return ret; } vectordbl(vectorF) { vector >A(K); for(int i=0;iret(K,(long)-9e18); for(int i=0;i=B[j]) { ret[j]=max(ret[j],A[i][j]); } } return ret; } main() { cin>>K>>N; for(int i=0;i>A[i]; for(int i=0;i>B[i]; if(NF(A,A+K);//K int w=0; long T=K; while(N>=T<=(T+1)<=0;I--) { F=dbl(F); if(N>>I&1)F=succ(F); } cout<