#include <fstream>
using namespace std;
ifstream cin("piese.in");
ofstream cout("piese.out");
int v[505][505];
int n,m,rasp;
void solve(int x,int y)
{
if(x>n or y>m) return;
int put=1;
while(x+put-1<=n and y+put-1<=m)
put*=2;
put/=2;
++rasp;
v[x][y]+=rasp;
v[x][y+put]-=rasp;
v[x+put][y]-=rasp;
v[x+put][y+put]+=rasp;
int cpy=put,i=x+put;
while(i<=n)
{
while(put>n-i+1)
put/=2;
for(int j=y;j<y+cpy;j+=put)
{
++rasp;
v[i][j]+=rasp;
v[i][j+put]-=rasp;
v[i+put][j]-=rasp;
v[i+put][j+put]+=rasp;
}
i+=put;
}
put=cpy;
i=y+put;
while(i<=m)
{
while(put>m-i+1)
put/=2;
for(int j=x;j<x+cpy;j+=put)
{
++rasp;
v[j][i]+=rasp;
v[j][i+put]-=rasp;
v[j+put][i]-=rasp;
v[j+put][i+put]+=rasp;
}
i+=put;
}
solve(x+cpy,y+cpy);
}
int main()
{
cin>>n>>m;
solve(1,1);
cout<<rasp<<'\n';
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
v[i][j]+=v[i-1][j]+v[i][j-1]-v[i-1][j-1];
cout<<v[i][j]<<' ';
}
cout<<'\n';
}
return 0;
}