#include <stdio.h>
long long x[102][102];
void div(int n,int &nr,int i,int j,int d)
{
if(j<n)
{
if(x[i][j]%d==0){
nr++,div(n,nr,i,j+1,d);}
else div(n,nr,i,j+1,d);
}
}
void pascal(int i,int j,int n)
{
while(i<=n)
{
x[i+1][j++]=1;
x[i][1]=1,++i;
}
for(int u=3;u<=j;++u)
for(int k=2;k<=u-1;++k)
x[u][k]=x[u-1][k]+x[u-1][k-1];
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
long long R,D,i,j;
int nr=0;
scanf("%I64d",&R);
scanf("%I64d",&D);
pascal(1,2,R+1);
for(i=1;i<=R+1;++i){
for(j=1;j<=R+1;++j)
printf("%I64d ",x[i][j]);printf("\n");}
div(R+1,nr,R+1,1,D);
printf("%d",nr);
return 0;
}