부당한 퍼즐

1부터 n까지의 두 순열이 주어질 때, 순환 회전과 뒤집기만으로 첫 순열을 두 번째 순열로 만들 수 있는지 판정해 good puzzle 또는 bad puzzle을 출력한다.

보통6문자열문자열 매칭투 포인터구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

현욱은 퍼즐 게임을 좋아한다. 어느 날 친구가 간단한 플래시 퍼즐 게임을 하나 추천해 줬는데, 규칙은 다음과 같다.

  1. 플레이어는 1부터 nn까지의 수가 한 번씩 나타나는 수열 하나를 들고 시작한다.

  2. 1부터 nn까지의 수가 한 번씩 나타나는 또 다른 수열이 목표로 주어진다. 처음 수열을 적당히 변형해서 목표 수열과 똑같이 만들어야 한다.

  3. 플레이어가 수열에 쓸 수 있는 동작은 두 가지이고, 각 동작은 몇 번이든 수행할 수 있다.

    • 뒤집기: 지금 수열의 순서를 거꾸로 뒤집는다. 예를 들어 1 2 3 4 5는 5 4 3 2 1이 된다.
    • 밀기: 지금 수열을 왼쪽이나 오른쪽으로 한 칸 민다. 끝에서 밀려난 수는 반대쪽 끝으로 들어간다. 예를 들어 1 2 3 4 5를 오른쪽으로 한 칸 밀면 5 1 2 3 4가 된다.

규칙은 아주 쉬운데도 퍼즐이 도무지 풀리지 않아서 한참 고민하던 현욱은, 다시 비교해 보고 나서야 이 퍼즐이 주어진 동작만으로는 목표 수열을 절대 만들 수 없는 퍼즐이라는 사실을 알아차렸다.

화가 난 현욱은 퍼즐 제작자에게 따지려고, 주어진 퍼즐이 올바른 퍼즐인지 아닌지 판정하는 프로그램을 만들기로 했다. 현욱을 도와 괘씸한 제작자를 응징해 주자.

입력

첫째 줄에 nn이 주어진다. (1n1061 \le n \le 10^6)

둘째 줄에 처음 수열이 주어진다. 1부터 nn까지의 수가 한 번씩 공백으로 구분되어 나온다.

셋째 줄에 목표 수열이 같은 형식으로 주어진다.

출력

주어진 두 동작만으로 처음 수열을 목표 수열로 만들 수 있으면 good puzzle을, 만들 수 없으면 bad puzzle을 출력한다.