#include int field[20][20], chk[20][20]; int N, C; int scsub(int x, int y, int c) { int dx[] = {-1, -1, 0, 0, 1, 1}; int dy[] = {-1, 0, -1, 1, 0, 1}; int i, p = 1, dead = 1;; if (chk[x][y]) return -1; chk[x][y] = 1; /*printf("i%d %d\n", x, y);*/ for (i = 0; i < 6; i++) { if (field[x+dx[i]][y+dy[i]] == 0) dead = 0; if (field[x+dx[i]][y+dy[i]] == c) { int dp = scsub(x+dx[i], y+dy[i], c); if (dp == 0) dead = 0; if (dp > 0) p += dp; } } return p * dead; } int getsc() { int i, j, x, y, sc = 0, dsc; for (i = 0; i < 20; i++) for (j = 0; j < 20; j++) chk[i][j] = 0; for (x = 1; x <= N; x++) { for (y = 1; y <= x; y++) { if (field[x][y] == 0 || chk[x][y]) continue; sc += scsub(x, y, field[x][y]) * (field[x][y]==C ? -1 : 1); /*printf("%d %d %d\n", x, y, sc);*/ } } return sc; } int main() { int i, j, k, sc, hisc; FILE *fp = fopen("sai.txt", "r"); while (fscanf(fp, "%d%d", &N, &C) == 2) { if (N == 0 && C == 0) break; for (i = 0; i < 20; i++) for (j = 0; j < 20; j++) field[i][j] = 99; for (i = 1; i <= N; i++) { for (j = 1; j <= i; j++) { fscanf(fp, "%d", &field[i][j]); } } hisc = -99999; for (i = 1; i <= N; i++) { for (j = 1; j <= i; j++) { if (field[i][j] == 0) { field[i][j] = C; sc = getsc(); if (sc > hisc) hisc = sc; field[i][j] = 0; } } } printf("%d\n", hisc); } return 0; }