#include<bits/stdc++.h>
using namespace std;

int N,M,K;
int E[100],A[100];
int v[4];

double dp[51][5000];
void solve(){


    dp[0][0]=1.0;
    for(int i=0;i<N;i++){
        for(int j=N-1;j>=i;j--){
            for(int k=0;k<=i*100;k++){
                for(int l=0;l<M;l++){
                    int toval=k;
                    int topos=min(N,j+v[l]);
                    if(E[topos]==1)topos=min(N,topos+A[topos]);
                    else if(E[topos]==2)toval+=A[topos];
                    else if(E[topos]==3)toval=max(0,toval-A[topos]);
                    dp[topos][toval]+=dp[j][k]/M;
                }
                dp[j][k]=0;
            }

        }
    }

    double sum=0;
    for(int i=0;i<5000;i++)sum+=dp[N][i]*i;
    cout<<(int)sum<<endl;
}

bool input(){
    memset(dp,0,sizeof(dp));
    memset(E,0,sizeof(E));
    memset(A,0,sizeof(A));

    cin>>M>>N>>K;
    if(M==0&&N==0&&K==0)return false;
    for(int i=0;i<M;i++)cin>>v[i];
    for(int i=0;i<K;i++){
        int n,e,a;
        cin>>n>>e>>a;
        E[n]=e;
        A[n]=a;
    }
    return true;
}

int main(){
    while(input())solve();
    return 0;
}