#include<stdio.h>
#include<map>
using namespace std;
typedef pair<int,int> P;
int r[4];
double dp[51][5001];
P m[51];
int max(int a,int b){return a>b?a:b;}
int min(int a,int b){return a<b?a:b;}
int main(){
	int rn,n,k;
	int i,j;
	while(1){
	scanf("%d %d %d",&rn,&n,&k);
	if(rn==0)return 0;
	for(i=0;i<rn;i++)scanf("%d",&r[i]);
	for(i=0;i<=n;i++){
		m[i]=P(0,0);
		for(j=0;j<=n*100;j++)dp[i][j]=0.0f;
	}
	for(i=0;i<k;i++){
		int a,b,c;
		scanf("%d %d %d",&a,&b,&c);
		m[a]=P(b,c);
	}
	dp[0][0]=1.0f;
	for(i=0;i<n;i++){
		for(j=0;j<=n*100;j++){
			if(dp[i][j]==0.0f)continue;
			for(k=0;k<rn;k++){
				int next=min(n,i+r[k]);
				int mon=j;
				if(m[next].first==1)next=min(n,next+m[next].second);
				else if(m[next].first==2)mon+=m[next].second;
				else if(m[next].first==3)mon=max(0,mon-m[next].second);
				dp[next][mon]+=dp[i][j]/rn;
			}
		}
	}
	double ans=0.0f;
	for(i=0;i<=n*100;i++)ans+=i*dp[n][i];
	printf("%d\n",(int)ans);
	}
}