만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

정지 문제

시간 제한3초메모리 제한512 MB

요약
정수 x를 상태마다 다르게 바꾸는 N개의 상태가 주어질 때, 상태 1에서 시작해 상태 N+1에 도달하는 단계 수를 구하고, 멈추지 않으면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
시뮬레이션, 수학, 해시맵
정답자
아직 제출이 없습니다

문제

유한 루프 공화국에서는 독특한 법률이 시행된다. 이 법에 따르면 영원히 멈추지 않는 프로그램은 바이러스로 간주된다. 이런 프로그램을 배포하면 사이버 범죄가 된다. 따라서 소프트웨어 제품은 정상적으로 사용될 때 항상 멈추도록 만들어야 한다.

임의의 프로그램이 임의의 입력에 대해 멈추는지 판정하는 알고리즘은 존재하지 않는다는 것은 잘 알려져 있다. 다행히 제품은 아래의 단순한 계산 모델을 기반으로 한다. 따라서 이 모델을 따르는 주어진 프로그램이 주어진 입력에 대해 결국 멈추는지 판정하는 프로그램을 작성할 수 있다.

계산 모델은 변수 xx 하나와 1번부터 N+1N + 1번까지 번호가 붙은 N+1N + 1개의 상태를 가진다. 변수 xx는 임의의 정수 값을 저장할 수 있다. 상태 N+1N + 1은 프로그램이 종료되었음을 뜻한다. 각 정수 ii (1≤i≤N1 \le i \le N)에 대해 상태 ii에서의 동작은 정수 다섯 개 aia_i, bib_i, cic_i, did_i, eie_i로 정해진다. 여기서 cic_i와 eie_i는 상태의 번호이다.

프로그램이 시작하면 상태는 1로 설정되고, xx는 프로그램의 입력인 x0x_0으로 설정된다. 프로그램이 상태 ii (1≤i≤N1 \le i \le N)에 있을 때, 한 실행 단계에서 다음 중 하나가 일어난다.

  • xx가 aia_i와 같으면 xx의 값이 x+bix + b_i로 바뀌고, 상태는 cic_i가 된다.
  • 그렇지 않으면 xx의 값이 x+dix + d_i로 바뀌고, 상태는 eie_i가 된다.

프로그램은 상태가 N+1N + 1이 되면 종료된다.

주어진 프로그램이 주어진 입력에 대해 결국 멈추는지 판정하라. 멈춘다면 실행되는 단계 수를 구하라. 초기화는 단계로 세지 않는다.

입력

입력은 다음 형식의 테스트 케이스 하나로 이루어진다.

N x0
a1 b1 c1 d1 e1
.
.
.
aN bN cN dN eN

첫 줄에는 정수 NN (1≤N≤1051 \le N \le 10^5)과 x0x_0 (−1013≤x0≤1013-10^{13} \le x_0 \le 10^{13})이 주어진다. 프로그램에는 N+1N + 1개의 상태가 있다. 다음 NN개의 줄에는 상태 ii에서의 동작을 정하는 정수 다섯 개 aia_i, bib_i, cic_i, did_i, eie_i가 주어진다. aia_i, bib_i, did_i는 −1013-10^{13} 이상 101310^{13} 이하이고, cic_i와 eie_i는 1 이상 N+1N + 1 이하이다.

출력

주어진 입력에 대해 프로그램이 결국 멈추면, 종료될 때까지 실행된 단계 수를 한 줄에 정수 하나로 출력하라. 값이 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

프로그램이 영원히 멈추지 않으면 −1-1을 출력한다.

예제4

  1. 예제 1

    입력
    2 0
    5 1 2 1 1
    10 1 3 2 2
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 1
    0 1 4 2 3
    1 0 1 1 3
    3 -2 2 1 4
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    3 3
    1 -1 2 2 2
    1 1 1 -1 3
    1 1 4 -2 1
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    13 3
    15 -10 4 4 2
    19 0 4 4 3
    23 -20 4 4 1
    6 1 2 1 5
    6 17 3 -1 6
    3 2 9 4 7
    7 0 9 4 8
    11 -5 9 4 6
    6 1 7 1 10
    6 5 8 -8 11
    1 2 11 1 12
    6 1 14 2 13
    6 -4 11 1 12
    
    예상 출력
    26