#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define FOR(i,l,r) for(int i=(l);i<=(r);i++)
using namespace std;
typedef long long LL;
const int maxn=51;

int n,m1,m2;
int ms[maxn],mx[maxn],ml[maxn],mr[maxn];
int mat[maxn][maxn];

int fa[maxn],tfa[maxn];
bool vis[maxn],settle[maxn*2];
bool dfs(int u) {
	if (settle[u]) return 0;
	if (vis[u]) return 0;
	vis[u]=1;
	for (int v=ms[u];v<=mx[u];v++) if (mat[u][v]) if (!settle[v+n])
		if (!fa[v] || dfs(fa[v])) {
			fa[v]=u;
			return 1;
		}
	return 0;
}

bool xyl(int d) {
	int cs=0;
	for (int i=d;i<=n;i++) {
		memset(vis,0,sizeof(vis));
		if (dfs(i)) cs++;
	}
	return cs==n-d+1;
}
bool solve() {
	FOR (i,1,n) ms[i]=1,mx[i]=n,ml[i]=1,mr[i]=n;
	for (int i=1,a,b,c;i<=m1;i++) {
		scanf("%d%d%d",&a,&b,&c);
		for (int j=a;j<=b;j++) ms[j]=max(ms[j],c);
		ml[c]=max(ml[c],a); mr[c]=min(mr[c],b);
	}
	for (int i=1,a,b,c;i<=m2;i++) {
		scanf("%d%d%d",&a,&b,&c);
		for (int j=a;j<=b;j++) mx[j]=min(mx[j],c);
		ml[c]=max(ml[c],a); mr[c]=min(mr[c],b);
	}
	for (int i=1;i<=n;i++) if (ml[i]>mr[i]) return 0;
	FOR (i,1,n) FOR (j,1,n) mat[i][j]=0;
	FOR (i,1,n) FOR (j,ms[i],mx[i]) if (ml[j]<=i&&mr[j]>=i) mat[i][j]=1;
	memset(fa,0,sizeof(fa)); memset(vis,0,sizeof(vis)); memset(settle,0,sizeof(settle));

	for (int i=1;i<=n;i++) {
		bool flag=0; settle[i]=1;
		for (int j=ms[i];j<=mx[i];j++) {
			if (mat[i][j]) if (!settle[j+n]) {
				FOR (k,1,n) tfa[k]=fa[k];
				fa[j]=i; settle[j+n]=1;
				if (flag|=xyl(i+1)) break;
				FOR (k,1,n) fa[k]=tfa[k]; settle[j+n]=0;
			}
		}
		FOR (k,1,n) if (!settle[k+n]) fa[k]=0;
		if (!flag) return 0;
	}
	int ans[51]={0};
	for (int i=1;i<=n;i++) ans[fa[i]]=i;
	for (int i=1;i<=n;i++) printf("%d%c",ans[i],i==n?10:32);
	return 1;
}
int main() {
	for (;~scanf("%d%d%d",&n,&m1,&m2);)
		if (!solve()) puts("-1");
	return 0;
}