#include <bits/stdc++.h>
using namespace std;
const long long INF=200000000;
int main() {
long long n, k, m, i, j; cin>>n>>k>>m;
long long a[n+1], sad[n+1];
for(i=1; i<=n; i++) cin>>a[i];
map<long long, long long> bad, dad;
for(i=1; i<=m; i++) {
long long c, d; cin>>c>>d;
bad[c]=d;
dad[c]=1;
bad[-1]++;
}
for(i=1; i<=n; i++) sad[i]=INF;
long long r, l;
r=0;
for(i=1; i<=n; i++) {
l=i;
if(i>=2) {
bad[a[i-1]]++;
if(bad[a[i-1]]==1 && dad[a[i-1]]==1) {
bad[-1]++;
}
}
if(bad[-1]==0) {
sad[i]=r-l+1;
continue;
}
for(j=r+1; j<=n; j++) {
r=j;
bad[a[j]]--;
if(bad[a[j]]==0 && dad[a[j]]==1) {
bad[-1]--;
if(bad[-1]==0) {
sad[i]=r-l+1;
break;
}
}
}
if(bad[-1]==0) sad[i]=r-l+1;
}
long long ans=INF;
for(i=1; i<=n; i++) {
ans=min(ans, sad[i]);
}
if(ans>n) {
cout<<"impossible"<<endl;
}
else {
cout<<ans<<endl;
}
}