#include <cstdio>
#include <cstring>

int n,m1,m2;
int l[55],r[55],mi[55],ma[55];
int a,b,c,ans[55];
int g[55][55],match[55],link[55],check[55];

bool DFS(int i)
{
	for (int j=1;j<=n;j++)
	if (g[i][j]&&!check[j]){
		check[j]=1;
		if (link[j]==-1||DFS(link[j])){
			link[j]=i;
			match[i]=j;
			return true;
		}
	}
	return false;
}

bool hungary()
{
	memset(match,-1,sizeof(match));
	memset(link,-1,sizeof(link));
	for (int i=1;i<=n;i++){
		memset(check,0,sizeof(check));
		for (int j=1;j<=n;j++)
		if (g[i][j]&&!check[j]){
			check[j]=1;
			if (link[j]==-1||DFS(link[j])){
				link[j]=i;
				match[i]=j;
				break;
			}
		}
		if (match[i]==-1) return false;
	}
	return true;
}

int main()
{
	while(scanf("%d%d%d",&n,&m1,&m2)!=EOF){
		for(int i=1;i<=n;i++){
			l[i]=1;r[i]=n;
			mi[i]=1;ma[i]=n;
		}
		for (int i=0;i<m1;i++){
			scanf("%d%d%d",&a,&b,&c);
			if (a>l[c]) l[c]=a;
			if (b<r[c]) r[c]=b;
			for (int j=a;j<=b;j++)
				if (mi[j]<c) mi[j]=c;
		}
		for (int i=0;i<m2;i++){
			scanf("%d%d%d",&a,&b,&c);
			if (a>l[c]) l[c]=a;
			if (b<r[c]) r[c]=b;
			for (int j=a;j<=b;j++)
				if (ma[j]>c) ma[j]=c;
		}
		memset(g,0,sizeof(g));
		for (int i=1;i<=n;i++){
			for (int j=mi[i];j<=ma[i];j++)
				if (l[j]<=i&&r[j]>=i)
					g[i][j]=1;
		}
		if (!hungary()){
			printf("-1\n");
			continue;
		}
		else{
			for (int i=1;i<=n;i++)
			{
				memset(check,0,sizeof(check));
				link[match[i]]=-1;
				for (int j=1;j<i;j++) check[match[j]]=1;
				for (int j=1;j<=match[i];j++)
				if (g[i][j]&&!check[j]){
					check[j]=1;
					if (link[j]==-1||DFS(link[j])){
						link[j]=i;
						match[i]=j;
						break;
					}
				}
			}
			for (int i=1;i<=n;i++)
				if (i!=1) printf(" %d",match[i]);
				else printf("%d",match[i]);
			printf("\n");
		}
	}
}
