앵무새

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

요약
N개의 앵무새 문장과 받아 적은 문장 L이 주어질 때, 각 앵무새의 단어 순서를 지키면서 단어가 겹치지 않게 끼어들어 L을 만들 수 있는지 판정한다.
난이도

보통10점 중 7점

유형
시뮬레이션, 그리디, 해시맵, 구현
정답자
아직 제출이 없습니다

문제

자가용 비행기로 세계 일주를 하던 pps789와 cseteram은 엔진 고장으로 이름 모를 섬에 불시착했다. 섬을 탐험하던 두 사람은 이 섬의 앵무새가 사람 말을 놀랍도록 잘 흉내 낸다는 사실을 알게 되었다. 둘은 따로 떨어져 섬을 탐험하기로 했고, 연락이 필요하면 앵무새를 쓰기로 약속했다.

한 달 뒤 pps789는 섬의 비밀을 밝힐 결정적인 증거를 찾았다. 그는 이 발견을 cseteram에게 알리려 했지만, 내용이 너무 많아 앵무새 한 마리가 기억할 수 없었다. 그래서 pps789는 앵무새 NN마리에 발견을 나누어 기억시킨 뒤 cseteram에게 날려 보냈다.

섬 반대편을 탐험하던 cseteram은 앵무새 NN마리가 날아와 저마다 말을 하기 시작하자 당황했다. pps789가 긴 글을 보내려 했다는 것은 알아챘지만, 들리는 대로 차례차례 받아 적고 보니 단어 순서가 뒤엉켜 원문을 알 수 없었다. 대신 그는 관찰로 규칙 몇 가지를 알아냈다.

  1. 앵무새 한 마리는 문장 하나를 기억한다. 문장은 여러 단어로 이루어지고, 앵무새는 그 단어를 기억한 순서대로 말한다.
  2. 앵무새가 한 단어를 말하고 다음 단어를 말하기 전에는 약간의 간격이 있는데, 이때 다른 앵무새가 말을 가로채고 자신의 문장을 말할 수 있다.
  3. 앵무새가 한 단어를 말하는 도중에는 다른 앵무새가 말을 가로채지 않는다.
  4. 어떤 단어도 앵무새가 말하는 문장 전체를 통틀어 두 번 이상 나오지 않는다.

앵무새는 자기가 기억한 문장을 끝까지 말한 다음 pps789에게 돌아가고, cseteram은 앵무새가 모두 돌아갈 때까지 단어를 받아 적는다. pps789가 각 앵무새에게 전달한 문장 SiS_i와 cseteram이 받아 적은 문장 LL이 주어진다. 위 규칙을 따랐을 때 LL이 나올 수 있는 문장인지 판별하시오.

입력

첫째 줄에 앵무새의 수 NN (1≤N≤1001 \le N \le 100)이 주어진다.

둘째 줄부터 NN개의 줄에 각 앵무새가 말한 문장 SiS_i (1≤i≤N1 \le i \le N)가 한 줄에 하나씩 주어진다. 문장을 이루는 단어는 공백 한 칸으로 구분한다. 문장 SiS_i의 단어 수는 1개 이상 100개 이하이고, 각 단어는 1자 이상 32자 이하의 영어 소문자로 이루어진다.

N+2N + 2째 줄에 cseteram이 받아 적은 문장 LL이 주어진다. LL의 단어 수는 1개 이상 10000개 이하이고, 각 단어는 1자 이상 32자 이하의 영어 소문자로 이루어진다.

출력

문장 LL이 나올 수 있으면 Possible을, 나올 수 없으면 Impossible을 출력한다.

예제3

  1. 예제 1

    입력
    3
    i want to see you
    next week
    good luck
    i want next good luck week to see you
    
    예상 출력
    Possible
    
  2. 예제 2

    입력
    2
    i found
    an interesting cave
    i found an cave interesting
    
    예상 출력
    Impossible
    
  3. 예제 3

    입력
    2
    please
    be careful
    pen pineapple apple pen
    
    예상 출력
    Impossible