#include <iostream>

using namespace std;

double dp[51][5001];
int event[51][2];
int step[4];
int X,Y,Z;

int main(void){
	while( cin >> X >> Y >> Z,X|Y|Z){
		// initialize
		for(int i=0;i<4;i++)
			step[i]=0;
		for(int i=0;i<51;i++)
			for(int j=0;j<5001;j++)
				dp[i][j]=0.0;
		dp[0][0]=1.0;
		for(int i=0;i<51;i++)
			event[i][0]=event[i][1]=0;
		//	reading
		for(int i=0;i<X;i++)
			cin >> step[i];
		for(int i=0;i<Z;i++){
			int tmp;
			cin >> tmp;
			cin >> event[tmp][0] >>event[tmp][1];
		}
		for(int i=0;i<Y;i++){
			for(int j=0;j<=5000;j++){
				for(int k=0;k<X;k++){
					int root=i+step[k];
					if(root>=Y)
						dp[Y][j]+=dp[i][j]/X;
					else if(event[root][0]==1){
						if(root+event[root][1]>Y)
							dp[Y][j]+=dp[i][j]/X;
						else
							dp[root+event[root][1]][j]+=dp[i][j]/X;
					}else if(event[root][0]==2)
						dp[root][j+event[root][1]]+=dp[i][j]/X;
					else if(event[root][0]==3){
						if(event[root][1]<j)
							dp[root][j-event[root][1]]+=dp[i][j]/X;
						else
							dp[root][0]+=dp[i][j]/X;
					}else
						dp[root][j]+=dp[i][j]/X;
				}
			}
		}
		double exp=0.0;
		for(int i=0;i<=5000;i++)
			exp+=dp[Y][i]*i;
		cout << (int)exp << endl;
	}
	return 0;
}