Life Line

삼각형 보드에 번호가 붙은 돌이 놓여 있을 때, 돌 하나를 놓아 이번 차례의 점수(상대 돌 제거로 얻는 점수에서 자기 돌 제거로 잃는 점수를 뺀 값)가 최대가 되도록 한다.

보통6시뮬레이션그래프구현완전 탐색아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

새로운 보드게임 "Life Line"을 해 보자.

참가자 수는 2명 이상 9명 이하이다.

이 게임의 판은 작은 정삼각형을 여러 개 이어 붙여 만든 큰 정삼각형이다(그림 1). 작은 정삼각형의 변 길이는 모두 같다.

그림 1: 게임판

판의 크기는 바깥 삼각형의 밑변에 놓인 꼭짓점의 개수로 나타낸다. 예를 들어 그림 1의 판은 크기가 4이다.

게임을 시작할 때 각 참가자는 1 이상 9 이하의 서로 다른 식별 번호를 받고, 자신의 번호가 적힌 돌을 몇 개 받는다.

참가자는 차례대로 "빈" 꼭짓점 하나에 자기 돌을 놓는다. 빈 꼭짓점이란 돌이 놓여 있지 않은 꼭짓점이다.

참가자가 자기 차례에 돌을 놓으면 판에서 돌이 제거될 수 있다. 참가자는 제거된 다른 참가자의 돌 개수만큼 점수를 얻고, 제거된 자기 돌 개수만큼 점수를 잃는다. 한 차례의 점수는 그 차례에 얻은 점수에서 잃은 점수를 뺀 값이다.

돌이 제거되는 조건은 다음과 같다.

  • 판 위의 돌은 여러 그룹으로 나뉜다. 한 그룹은 번호가 같고 서로 인접하게 놓인 돌의 집합이다. 즉, 같은 번호의 돌이 인접하게 놓여 있으면 같은 그룹에 속한다.
  • 어떤 그룹의 돌 중 빈 꼭짓점과 인접한 돌이 하나도 없으면, 그 그룹의 돌을 모두 판에서 제거한다.

그림 2: 돌의 그룹

그림 2는 돌 그룹의 예이다.

지금 참가자 '4'의 차례라고 하자. 그림 3a의 꼭짓점에 돌을 놓으면 제거 조건을 만족하는 그룹이 생기고(그림 3b의 음영 부분), 다른 참가자의 돌 6개가 제거되므로 참가자는 6점을 얻는다(그림 3c).

그림 3a그림 3b그림 3c

다른 예로, 그림 2의 상태에서 참가자 '2'의 차례라고 하자. 그림 4a의 꼭짓점에 돌을 놓으면 제거 조건을 만족하는 그룹이 생긴다(그림 4b의 음영 부분). 다른 참가자의 돌 4개가 제거되므로 4점을 얻지만, 동시에 자기 돌 3개가 제거되므로 3점을 잃는다. 따라서 이 차례의 점수는 4 - 3 = 1이다(그림 4c).

그림 4a그림 4b그림 4c

모든 참가자가 자기 돌을 전부 판에 놓으면 게임이 끝난다. 참가자의 총점은 자기 차례마다 얻은 점수의 합이다.

현재 차례의 참가자가 이번 차례에 얻을 수 있는 최대 점수(얻는 점수에서 잃는 점수를 뺀 값)를 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 데이터로 이루어져 있다. 각 데이터는 진행 중인 게임판의 상태 하나를 나타낸다.

각 데이터의 형식은 다음과 같다.

 N C

          S1,1
       S2,1  S2,2
    S3,1 S3,2 S3,3
          ...
  SN,1    ...    SN,N

NN은 판의 크기이다 (3N103 \le N \le 10).

CC는 지금 차례인 참가자의 식별 번호이다 (1C91 \le C \le 9). 즉, 프로그램은 이 참가자가 이번 차례에 얻는 점수를 계산해야 한다.

Si,jS_{i,j}는 판 위 꼭짓점의 상태이다 (0Si,j90 \le S_{i,j} \le 9). Si,jS_{i,j}가 양수이면 그 꼭짓점에 번호 Si,jS_{i,j}가 적힌 돌이 놓여 있다는 뜻이고, 0이면 그 꼭짓점이 비어 있다는 뜻이다. 각 데이터의 판에는 빈 꼭짓점이 적어도 하나 있다.

한 줄에 0이 두 개 있는 줄, 즉 0 0은 입력의 끝을 나타낸다.

출력

각 데이터마다 그 참가자가 이번 차례에 얻을 수 있는 최대 점수를 한 줄에 하나씩 출력한다.