#include #define rep(i,n)for(int i=0;i<(n);i++) using namespace std; template struct sum1d{ int n; T mod; vectorsum; bool flag=false; sum1d(){} sum1d(int n,T mod=-1):n(n),mod(mod),sum(vector(n+1)){} void add(int x,T t){ flag=false; x++; sum[x]+=t; if(mod!=-1)sum[x]%=mod; } void calc(){ flag=true; for(int i=1;i<=n;i++){ sum[i]+=sum[i-1]; if(mod!=-1)sum[i]%=mod; } } T get(int l,int r){//[l,r) if(!flag)calc(); T res=sum[r]-sum[l]; if(mod!=-1){ while(res::iterator begin(){ if(!flag)calc(); return sum.begin(); } typename vector::iterator end(){ if(!flag)calc(); return sum.end(); } T&operator[](int x){ if(!flag)calc(); x++; return sum[x]; } }; int a[2000]; int main(){ int n,m;scanf("%d%d",&n,&m); rep(i,m){ sum1dsum(n); rep(j,n){ int b;scanf("%d",&b); a[j]+=b; sum.add(j,a[j]); } for(int j=-1;j