#include<iostream>
using namespace std;
int dy[]={-1,0,1,0,-1,1};
int dx[]={0,1,0,-1,-1,1};
int n,m;
int t[20][20];
int u[20][20];
int cnt,flg;
bool visited[20][20];

void rec(int y,int x,int key){
  if(u[y][x]==0)flg=1;
  if(u[y][x]!=key)return;
  if(visited[y][x])return;
  cnt++;
  visited[y][x]=true;
  for(int i=0;i<6;i++)
    rec(y+dy[i],x+dx[i],key);
}

int check(int y,int x){
  for(int i=0;i<20;i++){
    for(int j=0;j<20;j++){
      u[i][j]=t[i][j];
      visited[i][j]=false;
    }
  }
  u[y][x]=m;
  int res=0;
  for(int i=1;i<=n;i++){
    for(int j=1;j<=i;j++){
      if(visited[i][j])continue;
      flg=cnt=0;
      rec(i,j,u[i][j]);
      if(flg)continue;
      if(u[i][j]==m)res-=cnt;
      else res+=cnt;
    }
  }
  return res;
}

void init(){
  for(int i=0;i<20;i++)
    for(int j=0;j<20;j++)
      t[i][j]=-1;
}

int main(){
  while(1){
    cin>>n>>m;
    if(n==0&&m==0)break;
    init();
    for(int i=1;i<=n;i++){
      for(int j=1;j<=i;j++){
        cin>>t[i][j];
      }
    }
    int ans=-10000;
    for(int i=1;i<=n;i++){
      for(int j=1;j<=i;j++){
        if(t[i][j]==0){
          ans=max(ans,check(i,j));
        }
      }
    }
    cout<<ans<<endl;
  }
  return 0;
}