카드 게임
시간 제한5초메모리 제한512 MB
카드 나열과 차이 K가 주어지면 차이가 K인 등차수열을 이루는 이웃한 세 장씩을 반복해 지워 남는 카드 수를 최소화합니다.
문제
밥은 카드 놀이를 좋아한다. 생일에 친구 앨리스에게 카드 한 벌을 선물로 받았다.
카드는 장이고, 각 카드에는 정수가 하나씩 적혀 있다. 밥은 카드를 왼쪽에서 오른쪽으로 책상에 늘어놓은 다음 몇 장을 버리려고 한다. 카드를 버리기 전에 먼저 정수 를 하나 정한다. 한 번 버릴 때는 서로 이웃한 카드 3장을 고르며, 왼쪽부터 적힌 수를 차례로 , , 라고 하면 반드시
를 만족해야 한다.
카드 3장을 버리면 그 자리가 비므로, 버린 자리의 왼쪽에 있던 카드와 오른쪽에 있던 카드가 새로 이웃이 된다. 밥은 이 과정을 조건을 만족하는 카드 3장이 있는 한 원하는 만큼 반복할 수 있고, 어느 3장을 버릴지 고를 수 있다.
밥이 가장 유리하게 골라서 버렸을 때 마지막에 남는 카드의 최소 개수를 구하라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스는 두 줄이다. 첫 줄에는 카드의 개수 과 밥이 정한 수 가 공백으로 구분되어 주어진다. 둘째 줄에는 왼쪽부터 순서대로 카드에 적힌 수 이 공백으로 구분되어 주어진다.
제한
- ()
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. 는 테스트 케이스 번호이고 1부터 시작한다. 는 밥이 최선으로 버렸을 때 남는 카드의 최소 개수이다.