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