#include<iostream>
#include<set>
#include<vector>
using namespace std;
const int r=1e4+7;
long long w[101][101];
int n,m;
set<long long> weight;
long long sum=0;
int dx[2]={0,1};
int dy[2]={1,0};
void backtrack(int x,int y)
{
//sum+=w[x][y];
if(x==n&&y==m)
{
long long answer=sum%r;
weight.insert(answer);
//cout<<"存入"<<answer<<endl;
}
else
{//cout<<" "<<x<<" "<<y<<" "<<sum<<endl;
for(int k=0;k<2;k++)
{
int i=x+dx[k];
int j=y+dy[k];
if(i<=n&&j<=m)
{
sum+=w[i][j];
backtrack(i,j);
sum-=w[i][j];
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>w[i][j];
//sum=w[1][1];
backtrack(1,1);
cout<<weight.size();
return 0;
}