#include <bits/stdc++.h>
using namespace std;
#define int long long
#define f first
#define ss second
#define ina insert
#define pb push_back
signed main(){
int n,m,t;
cin>>n>>m>>t;
int x[n];
for(int i=0; i<n; i++){
cin>>x[i];
}
map<int,pair<int,int>>mp;
// romeli ramd wirdeba ramdeni gvaqvs//
for(int i=0; i<t; i++){
int a,b;
cin>>a>>b;
mp[a]={b,0};
}
for(int i=0; i<m; i++){
if(mp[i].f<1e18){
continue;
}
mp[i]={1e18,0};
}
int vak=0;
int k=-1;
int ans=1e18;
for(int i=0; i<n; i++){
if(i>0){
mp[x[i-1]].ss--;
if(mp[x[i-1]].ss<mp[x[i-1]].f && mp[x[i-1]].ss+1>=mp[x[i-1]].f)vak--;
}
if(vak==t && k<n){
//cout<<i<<" "<<k-i+1<<endl;
ans=min(ans,k-i+1);
continue;
}
while(k<n){
k++;
mp[x[k]].ss++;
if(mp[x[k]].ss==mp[x[k]].f)vak++;
//if(i==2)cout<<vak<<" "<<mp[x[k]].f<<" "<<mp[x[k]].ss<<endl;
if(vak==t){
break;
}
// else{
// k++;
// }
}
//cout<<i<<" "<<k<<" "<<vak<<endl;
if(k==n)continue;
ans=min(ans,k-i+1);
}
if(ans==1e18){
cout<<"impossible"<<endl;
}
else cout<<ans<<endl;
}