#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m,k;
int full[8] = {0};
struct Node{
int id;
int s[8];
int sum;
int p,flag;
Node()
{
sum = 0;
flag = 0;
p = 0;
fill(s,s+8,-2);
}
}node[10010];
bool cmp(Node a,Node b)
{
if(a.flag != b.flag) return a.flag > b.flag;
else if(a.sum != b.sum) return a.sum > b.sum;
else if(a.p != b.p) return a.p > b.p;
else return a.id < b.id;
}
int main()
{
scanf("%d %d %d",&n,&k,&m);
for(int i = 1; i <= k; i++)
{
scanf("%d",&full[i]);
}
int u,v,t;
for(int i = 1; i <= m; i++)
{
scanf("%d %d",&u,&v);
node[u].id = u;
scanf("%d",&t);
if(t > node[u].s[v])
{
node[u].s[v] = t;
if(t == full[v])
node[u].p ++;
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= k; j++)
{
if(node[i].s[j] > 0)
node[i].sum += node[i].s[j];
}
}
for(int i = 1; i <= n; i++)
{
int flag = 0;
for(int j = 1; j <= k; j++)
{
if(node[i].s[j] != -1 && node[i].s[j] != -2)
{
flag = 1;
break;
}
}
node[i].flag = flag;
}
sort(node+1,node+n+1,cmp);
int r = 1;
printf("%d %05d %d",r,node[1].id,node[1].sum);
for(int j = 1; j <= k; j++)
{
if(node[1].s[j] >= 0) printf(" %d",node[1].s[j]);
else if(node[1].s[j] == -2)printf(" -");
else printf(" 0");
}
printf("\n");
for(int i = 2; i <= n; i++)
{
if(node[i].flag == 1)
{
if(node[i].sum != node[i-1].sum)
r= i;
printf("%d %05d %d",r,node[i].id,node[i].sum);
for(int j = 1; j <= k; j++)
{
if(node[i].s[j] >= 0)
{
printf(" %d",node[i].s[j]);
}
else if(node[i].s[j] == -2)printf(" -");
else printf(" 0");
}
printf("\n");
}
else break;
}
return 0;
}