시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
가상의 프로그래밍 언어 L로 작성한 프로그램이 주어진다. 각 줄에는 1부터 N까지의 번호가 붙어 있고, 프로그램은 1번 줄에서 시작한다. 명령을 하나 수행할 때마다 먼저 그 줄 번호가 출력된다. ifgo처럼 입력을 읽는 명령도 줄 번호를 먼저 출력한 뒤 입력을 읽는다.
사용할 수 있는 명령은 다음 다섯 가지이다.
ifgo x: 한 비트 입력을 읽는다. 입력이 1이면 x번 줄로, 0이면 다음 줄로 이동한다.jump x: x번 줄로 이동한다.pass: 아무 일도 하지 않고 다음 줄로 이동한다.die: 프로그램을 종료한다. 이 명령은 반복문 안에는 나타나지 않는다.loop l c: l번 줄부터 현재 줄까지의 구간을 하나의 반복문으로 보고, 이 구간이 모두 c번 수행되도록 한다. 현재 줄에 처음 도착한 실행까지 포함하므로, 이 명령을 수행한 뒤에는 l번 줄부터 현재 줄까지를 추가로 c-1번 더 수행하고, 반복이 끝나면 다음 줄로 이동한다.ifgo와 jump는 자신이 속한 반복문의 범위 안에서만 이동할 수 있다. 반복문 밖에서 안쪽 반복문 내부로 뛰어들 수 없고, 반복문 밖으로 뛰어나갈 수도 없다. 반복문이 중첩되면 안쪽 반복문은 바깥쪽 반복문에 완전히 포함된다.
마지막 줄을 수행했는데 그 명령이 die가 아니면 프로그램은 다시 1번 줄부터 수행된다. 각 줄에는 공백이나 탭이 여러 개 있을 수 있고, 공백과 탭을 포함한 한 줄의 길이는 80자를 넘지 않는다.
ifgo가 읽는 입력은 출력되는 줄 번호의 개수가 최대가 되도록 주어진다고 가정한다. 이때 줄 번호가 최대 몇 번 출력되는지 구하시오.
첫째 줄에 줄의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 L 프로그램의 1번 줄부터 N번 줄까지가 차례대로 주어진다.
첫째 줄에 줄 번호가 출력되는 최대 횟수를 출력한다. 최대 횟수가 1,000,000,000을 넘으면 infinity를 출력한다.