#include "bits/stdc++.h"
using namespace std;
#ifdef duc_debug
#include "bits/debug.h"
#else
#define debug(...)
#endif
const int maxn = 2e5 + 5;
int n, a[maxn], k, q;
vector<int> vec[maxn];
int freq[maxn];
void solve() {
  cin >> n >> k >> q;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i];
    vec[a[i]].push_back(i);
  }
  set<int> s;
  for (int i = 1; i <= q; ++i) {
    int x; cin >> x;
    cin >> freq[x];
    if ((int)vec[x].size() < freq[x]) {
      cout << "impossible\n";
      return;
    }
    s.insert(vec[x][freq[x] - 1]);
  } 
  int res = *s.rbegin();
  for (int i = 1; i <= n; ++i) {
    res = min(res, *s.rbegin() - i + 1);
    if (freq[a[i]]) {
      s.erase(vec[a[i]][freq[a[i]] - 1]);
      if (freq[a[i]] == (int)vec[a[i]].size()) break;
      s.insert(vec[a[i]][freq[a[i]]++]);
    }
  }
  cout << res;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  solve();
  return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |