#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>                 

using namespace std;

const int NMAX=100, KMAX=100, GAP=30;

void PE(const char *s){
  cout << "PE: " << s << endl;
  exit(2);
}

void WA(const char *s){
  cout << "WA: " <<s << endl;
  exit(1);
}

void AC(){
  cout << "OK" << endl;
  exit(0);
}

int k,n,p,q,pans,qans;

struct Request{
  int t1, t2;
};

Request reqs[KMAX+1]; //иходные данные по заявкам
int ans[KMAX+1]; //решение пользователя - какая заявка в какой зал пойдёт
int rooms[NMAX+1], rcount; //какие залы задействованы


//параметры командной строки: имя входного файла, выходного (участника) и файла с правильным ответом
int main(int, char *argv[]){
  FILE *fin, *fout, *fans;
  fin = fopen(argv[1],"r");
  fout = fopen(argv[2],"r");
  fans = fopen(argv[3],"r");
  fscanf(fin,"%d %d", &n, &k);
  fscanf(fout,"%d %d", &p, &q);
  if (p<0 || p>k || q<0 || q>n) PE("wrong interval of P or Q");

  fscanf(fans, "%d %d", &pans, &qans);
  if (q>qans) WA("Number of rooms is too large");
  if (p<pans) WA("Number of requests is too small");

  for (int i=1; i<=k; i++) {
    int h1, m1, h2, m2;
    fscanf(fin, "%d:%d-%d:%d", &h1, &m1, &h2, &m2);
    reqs[i].t1 = h1*60+m1;
    reqs[i].t2 = h2*60+m2;
  }

  //считываем решение пользователя и проверяем, что заявки не повторяются и не кофликтуют
  for (int i=0; i<p; i++) {
    int req, room;
    fscanf(fout,"%d %d", &req, &room);
    if (req<=0 || req>k) PE ("Wrong number of request");
    if (room<=0 || room>n) PE ("Wrong number of room");
    if (ans[req]>0) PE ("Duplicate request's number");
    //проверим на возможные пересечения
    for (int j=1; j<=k; j++)
      if (ans[j] == room) {
        //проверка на пересечение заявок reqs[j].t1-reqs[j].t2 и reqs[req].t1-reqs[req].t2
        if (reqs[req].t1>=reqs[j].t2+GAP || reqs[j].t1>=reqs[req].t2+GAP) continue;
        WA ("Interscected requests");
      }
    ans[req] = room;
    if (rooms[room]==0) {
      rooms[room]=1;
      rcount++;
    }
  }

  //проверим, что ничего более ы выходном файле нет
  if (fscanf(fout,"%*d")!=EOF)
    PE("Excess data in output file");

  if (rcount > q) PE("Number of used rooms are more than declared");

  AC();
  return 0;
}
