#include <iostream>
#include <algorithm>
using namespace std;

const int INF = 1e+8;

int main(){
	int T, N;
	while( cin >> T, T ){
		int t[31], day[101], maxd = 0;
		fill(day, day + 101, INF);
		
		for(int i = 0; i < T; i++) cin >> t[i];
		cin >> N;
		for(int i = 0; i < N; i++){
			int D, M;
			cin >> D >> M;
			day[D-1] = min(day[D-1], M);
			maxd = max(maxd, D);
		}
		
		// dp[k][t] := k日目で周期がt番目のときの最小コスト
		int dp[101][31];
		for(int i = 0; i < 101; i++) fill(dp[i], dp[i] + 31, INF);
		dp[0][0] = 0;
		
		for(int i = 0; i < maxd; i++){
			for(int j = 0; j < T; j++){
				if( t[j] <= day[i] ){
					dp[i+1][(j+1)%T] = min(dp[i+1][(j+1)%T], dp[i][j]);
				}
				// 周期をリセットする
				dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 1);
			}
		}
		int ans = INF;
		for(int i = 0; i < T; i++){
			ans = min(ans, dp[maxd][i]);
		}
		cout << ans << endl;
	} 
}