//最大子矩阵和问题 空间分配
//#include<iostream>
//using namespace std;
//int maxsum(int n,int *x)
//{
// int sum=0,b=0;
// for(int i=1;i<=n;i++)
// {
// if(b>0)b+=x[i];
// else b=x[i];
// if(b>sum)sum=b;
// }
// return sum;
//}
//int maxsum2(int m,int n,int **x) //m行n列
//{
// int sum=0;
// int *b=new int [n+1];
// for(int i=1;i<=m;i++)
// {
// for(int k=1;k<=n;k++)
// b[k]=0;
// for(int j=i;j<=m;j++)
// {
// for(int k=1;k<=n;k++)
// b[k]+=x[j][k];
// int max=maxsum(n,b);
// if(max>sum)sum=max;
// }
// }
// return sum;
//}
//int main()
//{
// int m,n;
// int **x=new int *[100];
// int x[100][100];
// while(cin>>m>>n)
// {
// for(int i=1;i<=m;i++)
// {
// for(int j=1;j<=n;j++)
// {
// cin>>x[i][j];
// }
// }
// cout<<maxsum2(m,n,x)<<endl;
// }
//}
//#include<iostream>
//using namespace std;
//int maxsum(int n,int *x)
//{
// int sum=0,b=0;
// for(int i=1;i<=n;i++)
// {
// if(b>0)b+=x[i];
// else b=x[i];
// if(b>sum)sum=b;
// }
// return sum;
//}
//int maxsum2(int m,int n,int **x) //m行n列
//{
// int sum=0;
// int *b=new int [n+1];
// for(int i=1;i<=m;i++)
// {
// for(int k=1;k<=n;k++)
// b[k]=0;
// for(int j=i;j<=m;j++)
// {
// for(int k=1;k<=n;k++)
// b[k]+=x[j][k];
// int max=maxsum(n,b);
// if(max>sum)sum=max;
// }
// }
// return sum;
//}
//int main()
//{
// int m,n;
// int **x=new int *[100];
// int x[100][100];
// while(cin>>m>>n)
// {
// for(int i=1;i<=m;i++)
// {
// for(int j=1;j<=n;j++)
// {
// cin>>x[i][j];
// }
// }
// cout<<maxsum2(m,n,x)<<endl;
// }
//}