#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
 
using namespace std;
// [NOTE] on csacademy include workspace 178100
// lucrat de Iordache Bogdan cred
 
// ofstream in, out, ok
/*
 * Read input from in
 * contestant answer from out
 * official answer from ok
 */
 
/*
 *  To comunicate the result, use OK or WA.
 *  For a specific message, use OK("message") or WA("wa message")
 */
 
void WA(string s)
{
    cout << "0" << endl;
    cerr << s << endl;
    exit(0);
}
 
void OK(int scor, string s = "Okay")
{
    cout << scor << endl;
    cerr << s << endl;
    exit(0);
}
 
int main(int argc, char** argv) {
    ifstream in("aranjare3.in");
    ifstream out("aranjare3.out");
    ifstream ok("aranjare3.ok");
//     Init(argc, argv); // dont keep this
 
    int n, m, k;
    in >> n;
    if (!(out >> m)) { WA("Fisier de iesire corupt!"); }
    if (!(out >> k)) { WA("Fisier de iesire corupt!"); }  
 
    vector< vector<int> > stacks(m + 1, vector<int>(0));
    stacks[0].assign(n, 0);
    for (int i = 0; i < n; ++i)
        in >> stacks[0][i];
 
    for (int i = 0; i < k; ++i) {
        int x, y;
        if (!(out >> x)) { WA("Fisier de iesire corupt!"); }
        if (!(out >> y)) { WA("Fisier de iesire corupt!"); }
 
        if (0 > x || x > m || 0 > y || y > m) {
            WA("nonexisting stacks");
        }
        else if (stacks[x].empty()) {
            WA("operation on empty stack");
        }
 
        stacks[y].push_back(stacks[x].back());
        stacks[x].pop_back();
    }
 
    if ((int)stacks[0].size() != n) {
        WA("bad final stack state");
    }
 
    for (int i = 0; i < n-1; ++i) {
        if (stacks[0][i] > stacks[0][i + 1]) {
            WA("final stack is not sorted");
        }
    }
   if (n == 980) {
        int score = 0;
        if (m * k <= 3000000)
            score += 1;
        if (m * k <= 200000)
            score += 3;
        if (m * k <= 60000)
            score += 1;
        OK(score);
   }
   else {
        int score = 0;
        if (m * k <= 300000000)
            score += 1;
        if (m * k <= 6000000)
            score += 3;
        if (m * k <= 800000)
            score += 1;
        OK(score);
   }
}
