도영이는 블록을 쌓아 만든 스택을 가지고 노는 것을 좋아한다. 스택 하나하나를 산으로 여기고 자기만의 지형을 만든다.
스택은 모두 일렬로 놓여 있고, 도영이는 한 번에 블록 하나만 옮긴다. 한 번의 움직임은 이웃한 두 스택 중 한쪽의 맨 위 블록을 다른 쪽 스택 위로 옮기는 것이다. 도영이는 언제나 이 방법으로만 블록을 재배열한다.
블록이 하나 이상 쌓인 스택을 산이라고 한다. 두 산 사이의 거리는 두 스택의 위치 번호 차이다. 어떤 두 산을 골라도 그 거리가 소수이면 그 지형이 바로 아름다운 강산이다. 서로 이웃하지 않은 두 산도 모두 따져야 한다. 산이 하나뿐인 지형도 아름다운 강산이다.
예를 들어 왼쪽부터 블록이 1, 2, 1, 3, 2, 1, 2, 1개씩 쌓여 있다고 하자. 산을 두 개만 남기려면 아무리 잘 옮겨도 12번을 움직여야 한다. 하지만 2번, 4번, 7번 스택을 산으로 정하면 6번 만에 아름다운 강산이 된다. 세 산 사이의 거리가 각각 2, 3, 5로 모두 소수이기 때문이다.
블록의 현재 상태가 주어지면, 도영이가 아름다운 강산을 만드는 데 필요한 최소 움직임 횟수를 구하시오.
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 스택의 개수 n (1≤n≤30000)이 주어진다. 다음 줄에는 정수 b (0≤b≤1000)가 n개 주어지며, 왼쪽 스택부터 차례대로 그 스택에 쌓인 블록의 개수를 나타낸다. 두 정수는 공백 하나로 구분하고, 줄의 처음과 끝에는 공백이 없다. 블록이 하나도 없는 스택도 0으로 적는다.
입력의 마지막 줄에는 0 하나만 주어진다. 이 줄은 테스트 케이스가 아니라 입력이 끝났다는 표시다.
각 테스트 케이스마다 아름다운 강산을 만드는 데 필요한 최소 움직임 횟수를 한 줄에 하나씩 출력한다. 다른 공백이나 빈 줄은 출력하지 않는다.