PivotOJ

Index Case

시간 제한: 1000ms메모리 제한: 1024MB출처: GCPC 2021BOJ 25253

문제

The epidemiologist W. Andy wants to find the index case of an ongoing crisis. To do this, he modelled the city of the outbreak and its nn residents with a cellular automaton. The city is represented by nn cells numbered from 11 to nn and each cell has two neighbouring cells, one to its left and one to its right. The left neighbour of cell ii is cell i1i-1 and the right neighbour is cell i+1i+1. Additionally, the left neighbour of cell 11 is cell nn and the right neighbour of cell nn is cell 11. Thus, the city and the corresponding automaton form a simple cycle.

Each cell contains an integer between 11 and mm which represents how likely it is that this person is infected. Since the virus can only be transmitted by personal contact, the value in the iith cell on day dd only depends on the values of its neighbours and itself on the previous day. If we denote this value by sd[i]s_{d}[i], then the outbreak can be simulated by a function ff using the formula: \[s_{d}[i]=f\big(s_{d-1}[i-1],s_{d-1}[i],s_{d-1}[i+1]\big).\] Note that as the city is cyclic both i+1i+1 and i1i-1 are calculated modulo nn.

Andy wants to find the index case, so he first has to find s0s_0, the state of the city on day zero. This poses a problem, however, as it is not known on which day the crisis started. Right now, Andy believes that he accomplished the task and found the state s0s_0, but you are not convinced. Therefore, you want to check if there may be a state previous to the initial state proposed by Andy, i.e. whether there exists any state s1s_{-1} that gets transformed into s0s_0 by applying ff.

입력

The input consists of:

  • One line with two integers nn and mm (3n200,2m10)(3\leq n \leq 200, 2\leq m \leq 10), the number of cells and the number of states.
  • m3m^3 lines describing the values f(x,y,z)f(x,y,z) (1f(x,y,z)m1 \le f(x,y,z) \le m for each 1x,y,zm1 \le x,y,z \le m) of the function ff modelling the automaton. The values are given in lexicographic order of the arguments: The first value is f(1,1,1)f(1,1,1), the next is f(1,1,2)f(1,1,2), and so on until f(1,1,m)f(1,1,m), followed by f(1,2,1)f(1,2,1) and so forth. The last value is f(m,m,m)f(m,m,m).
  • One line with nn integers s0[1],,s0[n]s_0[1],\dots,s_0[n] (1s0[i]m1 \le s_0[i] \le m for each ii), the initial state that has been proposed by Andy.

출력

Output yes if there exists at least one possible previous state and no otherwise.

예제

예제 1

입력
4 2
1
2
1
2
2
1
2
1
1 2 1 2
출력
yes

예제 2

입력
6 2
1
2
1
2
2
1
2
1
1 2 1 2 1 2
출력
no

예제 3

입력
10 2
1
2
1
1
2
2
2
2
1 2 2 2 1 2 1 2 1 2
출력
yes
코드를 제출하려면 로그인하세요.