#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 看博友分析 抄博友程序 dfs 背
int da[20][20];
int vis[20][20];
int dx[6]={0,0,1,-1,1,-1};//抄博友程序 后两个背一下
int dy[6]={1,-1,0,0,1,-1};
int flag;
int num;
void dfs(int x,int y,int zhi)
{
//cout<<x<<" "<<y<<" "<<zhi<<endl;
if(da[x][y]==0)
{
flag=1;
return ;
}
if(da[x][y]!=zhi)
{
return ;
}
if(da[x][y]==zhi&& vis[x][y]==0)
{
num++;
vis[x][y]=1;
for(int i=0;i<6;i++)
{
dfs(x+dx[i],y+dy[i],zhi);
}
}
}
int main()
{
while(1)
{
int n,m;
cin>>n>>m;
if(n==0 && m==0)
{
break;
}
memset(da,-1,sizeof(da));
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cin>>da[i][j];
}
}
int mx=-10000;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
if(da[i][j]==0)
{
da[i][j]=m;
memset(vis,0,sizeof(vis));
int sum=0;
for(int a=1;a<=n;a++)
{
for(int b=1;b<=a;b++)
{
if(vis[a][b]==0&&da[a][b]!=0)
{
flag=0;
num=0;
dfs(a,b,da[a][b]);
if(flag==0)
{
if(da[a][b]==m)
{
sum=sum-num;
}else
{
sum=sum+num;
}
}
}
}
}
if(sum>mx)
{
mx=sum;
}
da[i][j]=0;
}
}
}
cout<<mx<<endl;
}
return 0;
}