#include "testlib.h"
#include<bits/stdc++.h>
using namespace std;
#define all(a) a.begin(),a.end()
#define x first
#define y second
typedef pair<int,int> pii;
typedef pair<pii,pii> _Rectangle;
int U[100011], V[100011], X[100011], Y[100011], n, m, k;

int readJuryInput(){
    n = inf.readInt();
    m = inf.readInt();
    k = inf.readInt();
    for (int i=1;i<=k;++i){
        U[i] = inf.readInt();
        V[i] = inf.readInt();
        X[i] = inf.readInt();
        Y[i] = inf.readInt();
    }
    return 0;
}

long long ansj;
int readJuryOutput(){
    ansj = ans.readLong();
    return 0;
}

long long ansp;
void compare(){// read student's output and compare
    int anshs;
    ansp = ouf.readLong();
    if (ansp == -1 && ansj != -1)
        quitf(_wa, "Jury %lld, Your %lld\n", ansj, ansp);

    if (ansp > ansj)
        quitf(_wa, "Kết quả chưa tối ưu!\n");

    vector<int> orders(k), mark(k+2);
    int cnt = 0;
    while (!ouf.seekEof()) {
        orders[cnt] = ouf.readInt();
        if (orders[cnt] > k || orders[cnt] < 1 || mark[orders[cnt]])
            if (ansp == ansj)
                quitp(50., "Bạn chỉ trả lời đúng chi phí cắt!\n");
            else
                quitf(_wa, "Xin chia buồn với bạn!\n");
        mark[orders[cnt]] = 1;
        cnt++;
    }
    if (cnt < k) {
        if (ansp == ansj)
            quitp(50., "Bạn chỉ trả lời đúng chi phí cắt!\n");
        else
            quitf(_wa, "Xin chia buồn với bạn!\n");
    }

    map<int, set<int>> byTop, byLeft;
    map<pii, set<pii>> byTopLeft;
    #define let(dosmt,u,v,x,y) byTop[u].dosmt(v),byLeft[v].dosmt(u),byTopLeft[{u,v}].dosmt({x,y})
    auto which = [&](int i){//return the top left _Rectangles by line i-th
        int top, left;
        if (U[i] == X[i]){
            left = V[i];
            if (byLeft[left].empty() || *byLeft[left].begin() >= U[i])
                return _Rectangle(pii(-1,-1), pii(-1, -1));
            top = *--byLeft[left].lower_bound(U[i]);
        } else {
            top = U[i];
            if (byTop[top].empty() || *byTop[top].begin() >= V[i])
                return _Rectangle(pii(-1,-1), pii(-1, -1));
            left = *--byTop[top].lower_bound(V[i]);
        }
        pii A(top, left), B = *byTopLeft[A].begin();
        // cerr << i << ": " << top << " " << left << " " << B.x << " " << B.y << endl;
        return _Rectangle(A, B);
    };
    let(insert,0,0,n,m);
    long long sum = 0;
    for (int i : orders){
        _Rectangle tmp = which(i);
        if (tmp.x.x == -1) {
            if (ansp == ansj)
                quitp(50., "Thứ tự cắt không hợp lý!\n");
            else
                quitf(_wa, "Xin chia buồn với bạn!\n");
        }
        pii A = tmp.first, B = tmp.second;
        let(erase, A.x, A.y, B.x, B.y);
        if (A <  pii(X[i], Y[i]))
            let(insert, A.x, A.y, X[i], Y[i]);
        else {
            if (ansp == ansj)
                quitp(50., "Thứ tự cắt không hợp lý!\n");
            else
                quitf(_wa, "Xin chia buồn với bạn!\n");
        }
        if (pii(U[i], V[i]) < B)
            let(insert, U[i], V[i], B.x, B.y);
        else {
            if (ansp == ansj)
                quitp(50., "Thứ tự cắt không hợp lý!\n");
            else
                quitf(_wa, "Xin chia buồn với bạn!\n");
        }
        sum += 1LL*(B.x-A.x)*(B.y-A.y);
        // cerr << sum << endl;
    }
    if (ansp != sum){
        if (ansp == ansj)
            quitp(50., "Yours = %lld, trace = %lld, Jurys = %lld", ansp, sum, ansj);
        else
            quitf(_wa, "Yours = %lld, trace = %lld, Jurys = %lld", ansp, sum, ansj);
    }
    if (ansp < ansj)
        quitf(_ok, "Ơ mây zing, gút chóp em. Kết quả tối ưu hơn đáp án!\n");

    quitf(_ok, "Ơ mây zing, gút chóp em.\n");
}
int main(int c, char **ars) {
    registerTestlibCmd(c, ars);
    readJuryInput();
    readJuryOutput();
    compare();
    return 0;
}
