웜리

시간 제한1초메모리 제한128 MB

문제

존리는 첫 컴퓨터 게임을 만들고 있다. 오프닝 장면에서 주인공 웜리는 다리 브리질리를 건너야 한다.

웜리는 똑같은 원형 방울 $b$개와 다리 $l$개로 이루어진 지렁이다. 어느 순간에도 각 다리는 방울 하나의 바로 아래에 있어야 하며, 방울 하나 아래에는 다리가 최대 한 개만 올 수 있다. 방울들은 서로 붙어 있으므로 $b$개의 방울은 항상 연속한 널빤지 $b$개를 덮는다.

브리질리는 방울 하나의 너비와 같은 널빤지 $n$개로 이루어져 있지만, 일부 널빤지는 빠져 있다. 다리는 존재하는 널빤지 위에만 놓일 수 있고, 빈 자리에는 놓일 수 없다.

매 단계마다 웜리는 다음 두 동작 중 정확히 하나를 수행한다.

  • 다리 하나를 앞으로 옮긴다. 이때 (존재하든 빠져 있든) 임의의 개수의 널빤지를 건너뛸 수 있다. 옮긴 뒤 그 다리는 방울 하나의 아래에 있는, 존재하는 널빤지 위에 놓여야 한다. 다리는 다른 다리를 앞질러 갈 수 없으므로 다리들의 좌우 순서는 항상 유지된다.
  • 모든 다리는 현재 널빤지에 그대로 둔 채 모든 방울을 앞으로 한 칸 옮긴다. 이 동작 후에도 각 다리는 여전히 어떤 방울의 아래에 있어야 한다.

처음에 방울들은 가장 왼쪽 널빤지 $b$개를 덮고, 다리들은 가장 왼쪽 널빤지 $l$개 위에 있다. 방울들이 가장 오른쪽 널빤지 $b$개를 덮고 다리들이 가장 오른쪽 널빤지 $l$개 위에 놓이면 애니메이션이 끝난다. 가장 왼쪽 널빤지 $l$개와 가장 오른쪽 널빤지 $l$개는 반드시 존재한다.

다리 이동과 방울 이동을 모두 세어, 웜리가 다리를 건너는 데 필요한 최소 단계 수를 구하라. 건널 수 없다면 불가능하다고 답하라.

입력

첫째 줄에 테스트 케이스의 수를 나타내는 양의 정수 $T$가 주어진다 ($T \le 100$). 각 테스트 케이스는 두 줄로 이루어진다.

  • 한 줄에 세 정수 $l$, $b$, $n$이 주어진다 ($1 \le l \le b \le n \le 10^6$). 각각 다리의 수, 방울의 수, 널빤지의 수이다.
  • 한 줄에 각 문자가 1 또는 0인 길이 $n$의 문자열이 주어진다. 1은 존재하는 널빤지를, 0은 빠진 널빤지를 나타낸다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. 웜리가 다리를 건너는 데 필요한 최소 단계 수이다. 건너는 것이 불가능하면 대신 IMPOSSIBLE을 출력한다.