시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 0 0 0 0.000%

문제

ACM 마을의 볼링 경기는 세 핀만을 사용한다. 여러분은 ACM 마을의 볼링 경기 점수를 계산하는 프로그램을 작성한다. 볼링 한 경기는 10 개의 프레임으로 이루어진다. 그리고 경기 점수는 매 프레임의 점수를 합산한 것이다. 마지막 프레임을 제외하면 각 프레임마다 최대 2 회까지 투구할 수 있는데, 스트라이크인 경우에는 1 회만 투구한다. 스트라이크란 1 회 투구하여 볼링 핀 3 개를 모두 쓰러뜨린 경우를 뜻한다. 첫 회에 볼링 핀 3 개를 모두 쓰러뜨리지 못한 경우에는 한 번 더 투구할 기회가 있는데, 두 번째 투구에서 나머지 핀들을 모두 쓰러뜨리면 스페어라고 하고 두 번째 투구에서도 나머지 핀들을 모두 쓰러뜨리지 못했다면 미스라고 한다. 마지막 10 번째 프레임에서도 미스가 된 경우에는 2 회까지만 투구한다. 그러나 10 번째 프레임에서 스트라이크나 스페어인 경우에는 최초 투구까지 포함하여 총 3 회를 투구한다. 그 이유는 10 번째 프레임의 점수를 정하기 위해서인데, 자세한 것은 다음 프레임 점수 규칙을 보자.

  • 미스: 2 회 투구하여 쓰러뜨린 볼링 핀 수가 해당 프레임의 점수가 된다.
  • 스페어: 2 회 투구하여 쓰러뜨린 볼링 핀 수(항상 3 이 됨)에, 바로 다음에 투구하여 쓰러뜨린 핀 수를 더한 점수가 해당 프레임의 점수가 된다.
  • 스트라이크: 1 회 투구하여 쓰러뜨린 볼링 핀 수(역시 항상 3 이 됨)에, 바로 다음과 그 다음에 투구하여 쓰러뜨린 핀 수를 더한 점수가 해당 프레임의 점수가 된다.

위 규칙에 따르면 스페어와 스트라이크인 경우에는 각각 다음 1 회, 그 다음 2 회의 투구에서 쓰러뜨린 볼링 핀 개수를 합산해야 하는데, 그렇기 때문에 10 번째 프레임에서 총 3 회를 던져야 하는 것이다. 예를 들어보자. 어떤 선수가 한 경기에서 총 18 회를 투구하여 쓰러뜨린 볼링 핀 수가 각각 1, 2, 1, 0, 3, 1, 1, 3, 3, 2, 1, 1, 2, 2, 1, 3, 1, 1 이라면 매 프레임은 다음과 같이 사선으로 구별할 수 있으며

1, 2 / 1, 0 / 3 / 1, 1 / 3 / 3 / 2, 1 / 1, 2 / 2, 1 / 3, 1, 1

각 프레임별 점수는 다음과 같이 계산된다.

4 / 1 / 5 / 2 / 8 / 6 / 4 / 5 / 6 / 5

따라서 이 경기의 점수는 46 점이 된다.

작성할 프로그램은 한 경기에서 투구하여 쓰러뜨린 볼링 핀 수를 읽어서 그 경기의 볼링 점수를 계산하는 프로그램이다. 한 가지 주의해야 할 점은 입력된 볼링 핀 수가 오류일 수도 있다는 점이다. 예를 들어서 어떤 경기에서 쓰러뜨린 볼링 핀 수가 2, 2 로 시작한다면 이는 오류다. 처음에 볼링 핀을 모두 쓰러뜨리지 못했기 때문에(3 개 중 두 개만 쓰러뜨림) 그 다음에 스페어 시도를 하게 되며 이 때 최대로 쓰러뜨릴 수 있는 볼링 핀 수는 1 이기 때문이다. 이런 입력은 오류로 처리한다.

입력

프로그램은 표준입력(standard input)에서 입력을 받는다. 입력은 T (0 < T < 100)개의 테스트 케이스로 구성되는데 각 테스트 케이스는 두 행으로 구성된다. 입력의 맨 첫 행에는 T 가 주어진다. 각 테스트 케이스의 첫 행에는 두 번째 행에 입력될 정수 개수가 11 이상 21 이하의 정수로 주어진다. 두 번째 행에는 쓰러뜨린 볼링 핀 수가 0 이상 3 이하의 정수로 주어진다.

출력

프로그램은 표준출력(standard output)에 출력한다. 입력으로 주어진 각 테스트 케이스에 대해 볼링 게임 점수를 한 라인에 하나씩 출력한다. 따라서 출력될 행 수는 정확히 T가된다. 입력된 테스트 케이스가 잘못된 입력일 경우에는 error를 출력한다.

예제 입력 1

3
18
1 2 1 0 3 1 1 3 3 2 1 1 2 2 1 3 1 1
12
3 3 3 3 3 3 3 3 3 3 3 3
12
2 2 3 3 3 3 3 3 3 3 3 3

예제 출력 1

46
90
error