#include #include #include using namespace std; #include #include template struct Matrix{ vector >dat; int N,M;//N x M matrix Matrix(){} Matrix(int N_):Matrix(N_,N_){} Matrix(int N_,int M_):N(N_),M(M_),dat(N_,vector(M_)){} vector&operator[](int i){return dat[i];} const vector&operator[](int i)const{return dat[i];} static Matrix eye(int N) { Matrix res(N); for(int i=0;i>=1)if(n&1)res=res*a; return res; } }; long N; int K; long A[1010],B[1010]; main() { cin>>K>>N; for(int i=0;i>A[i]; for(int i=0;i>B[i]; if(NT;T.reserve(2*K); for(int i=0;i1) { int mid=(l+r)/2; Matrix<>X(K); for(int i=0;i=T[mid]; for(int i=1;i=T[mid])ok|=X[0][K-i-1]; if(ok)l=mid; else r=mid; } cout<