import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import static java.lang.Math.max;
public class Main {
private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int n, k, m, a, b;
String[] be = reader.readLine().split(" ");
n = Integer.parseInt(be[0]);
k = Integer.parseInt(be[1]);
Integer[] feladatok = new Integer[n+2];
Integer[] legjobb = new Integer[n+2];
HashSet<Integer>[] szabalyok = new HashSet[k+1];
be = reader.readLine().split(" ");
for (int i = 0; i < n; i++){
feladatok[i] = Integer.parseInt(be[i])-1;
legjobb[i] = -1;
}
feladatok[n] = feladatok[n+1] = legjobb[n] = legjobb[n+1] = -1;
for (int i = 0; i < k; i++){
szabalyok[i] = new HashSet<>();
}
if (feladatok[0] == k && feladatok[1] == k) {
System.out.println("0");
return;
}
m = Integer.parseInt(reader.readLine());
while (m > 0) {
m--;
be = reader.readLine().split(" ");
a = Integer.parseInt(be[0])-1;
b = Integer.parseInt(be[1])-1;
if (a == k || b == k) continue;
szabalyok[a].add(b);
}
legjobb[0] = feladatok[0] == k ? -1 : 1;
legjobb[1] = feladatok[1] == k ? -1 : 1;
for (int i = 0, j = 0; i < n; i++) {
if (j == 2) break;
if (legjobb[i] == -1) {
j++;
continue;
}
j = 0;
if (szabalyok[feladatok[i]].contains(feladatok[i + 1]))
legjobb[i + 1] = max(legjobb[i + 1], legjobb[i] + 1);
if (szabalyok[feladatok[i]].contains(feladatok[i + 2]))
legjobb[i + 2] = max(legjobb[i + 2], legjobb[i] + 1);
}
System.out.println(max(0, max(legjobb[n - 1], legjobb[n - 2])));
}
}