프랑스식 만찬

각 요리에 제공 시각을 배정해 동시성 및 선후 제약을 모두 만족하면서 식사 전체 길이가 K분 이내가 되도록 할 수 있는지 판정한다.

어려움8최단 경로그래프수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

당신은 프랑스 요리사이고, 아주 격식 있는 만찬을 준비해야 한다. 프랑스 요리사라면 식사에 얽힌 까다로운 예법을 전부 안다. 어떤 음식을 동시에 내야 하는지, 어떤 음식을 먼저 내야 하는지, 코스 사이에 얼마나 기다려야 하는지 같은 것이다.

예를 들어 치즈에 곁들이는 레드 와인은 치즈 접시보다 적어도 5분 먼저 나와야 한다. 그러지 않으면 손님이 와인에 어울리는 치즈를 고를 수 없다. 또 이 와인은 메인 코스보다 적어도 20분 뒤에 나와야 한다. 메인 코스에 곁들인 와인을 다 마실 시간이 필요하기 때문이다. 치즈는 빵과 거의 같은 시각에 나와야 한다. 그러지 않으면 손님이 빵과 치즈를 따로 먹는다. 이런 규칙이 너무 많아서 전부 지킬 수 있을지조차 확신이 서지 않는다.

다행히 규칙을 모두 적어 두었으니 이제 완벽한 식사를 짜 볼 차례다. 규칙은 두 가지다.

  • 동시성 규칙 SIM A B T는 A와 B를 최대 TT분 간격으로 내야 한다는 뜻이다.
  • 선후 규칙 BEF A B T는 A를 B보다 적어도 TT분 먼저 내야 한다는 뜻이다.

식사 전체는 최대 KK분을 넘지 않아야 한다. 즉 가장 먼저 낸 음식과 가장 나중에 낸 음식 사이가 최대 KK분이어야 한다. 어떤 음식도 건너뛸 수 없다.

주어지는 조건의 경계값은 모두 포함한다. A를 t=0t = 0에, B를 t=1t = 1에 냈다면 SIM A B 1과 BEF A B 1이 둘 다 만족되고, A와 B로 이루어진 식사는 1분이 걸린다.

모든 규칙을 지키는 식사 일정이 존재하는지 판정하라.

입력

입력은 N+1N + 1개 줄로 이루어진다.

첫째 줄에는 정수 NNKK가 공백으로 구분되어 주어진다. NN은 규칙의 개수이고, KK는 식사에 허용되는 최대 시간이다.

이어지는 NN개 줄에는 규칙이 한 줄에 하나씩 주어진다. 규칙의 형태는 SIM A B T 또는 BEF A B T이다. TT는 정수이고, A와 B는 공백이 없는 길이 1 이상 1000 이하의 문자열이다. 한 규칙이 같은 음식을 두 번 지목하기도 한다.

입력에 등장하는 정수 NN, KK, 모든 TT는 0 이상 1000 이하이다.

출력

모든 규칙을 지키는 식사를 짤 수 있으면 YES를, 그렇지 않으면 NO를 한 줄에 출력한다.