#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define ertunt return
#define rall(x) x.rbegin(),x.rend()
using namespace std;
int main(){
ll n,k,r;
cin >> n >> k >> r;
vector<ll>a(n);
for(auto &x : a)cin >> x;
vector<ll>tar(k+1,0),cnt(k+1);
vector<bool>en(k+1,0);
set<ll>st;
for(ll i = 0; i < r; i++){
ll x,y;
cin >> x >> y;
st.insert(x);
tar[x] = y;
en[x] = 1;
}
ll j = 0;
ll ans = 1e18;
for(ll i = 0; i < n; i++){
if(i > 0){
cnt[a[i-1]]--;
if(en[a[i-1]] && cnt[a[i-1]] < tar[a[i-1]]) st.insert(a[i-1]);
}
while(j < n && !st.empty()){
cnt[a[j]]++;
if(en[a[j]] && cnt[a[j]] >= tar[a[j]]) st.erase(a[j]);
j++;
}
if(st.empty()) ans = min(ans,j-i);
}
if(ans != 1e18)cout << ans;
else cout << "impossible";
}