#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;
if(dad[c]==0) bad[-1]++;
bad[c]+=d;
dad[c]=1;
}
for(i=1; i<=n; i++) sad[i]=INF;
long long l, r=0;
for(i=1; i<=n; i++) {
l=i;
if(i>=2) {
bad[a[i-1]]++;
if(dad[a[i-1]]==1 && bad[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(dad[a[j]]==1 && bad[a[j]]==0) {
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\n";
else cout<<ans<<"\n";
}