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

int T;
int n;
int ti[101];
int d[101];
int dp[101][31];
int finD;

const int INF=1000000000;
int dfs(int pos,int tm){
	if(pos==finD+1)return 0;
	if(dp[pos][tm]!=-1)return dp[pos][tm];
	int res=INF;
	// JtFCðùÞ
	res=min(res,dfs(pos+1,1%T)+1);
	// ÔÉ¤êÍAùÜÈ¢Æ¢¤Iðà è
	if(d[pos]==-1||d[pos]>=ti[tm])res=min(res,dfs(pos+1,(tm+1)%T));
	return dp[pos][tm]=res;
}

int main(){

	while(cin>>T&&T){
		for(int i=0;i<T;i++)cin>>ti[i];
		cin>>n;
		memset(dp,-1,sizeof(dp));
		memset(d,-1,sizeof(d));
		finD=0;
		for(int i=0;i<n;i++){
			int da,m;
			cin>>da>>m;
			finD=max(finD,da);
			if(d[da]==-1)d[da]=m;
			else d[da]=min(d[da],m);
		}
		int res=dfs(1,0);
		cout<<res<<endl;
	}

	return 0;
}