#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10,mod=998244353,B=1e18;
int n,ans,tmp=B%mod;
struct Graph{
	int m,cnt;
	int head[N],to[N],nxt[N],vis[N],sg[N],sum[N];
	void add(int u,int v){
		to[++cnt]=v,nxt[cnt]=head[u],head[u]=cnt;
	}
	void init(){
		scanf("%lld",&m);
		for(int i=1;i<=m;i++){ int u,v; scanf("%lld%lld",&u,&v),add(min(u,v),max(u,v)); }
		for(int i=n;i>=1;i--){
			for(int j=head[i];j;j=nxt[j]) vis[sg[to[j]]]=1;
			while(vis[sg[i]]) sg[i]++;
			for(int j=head[i];j;j=nxt[j]) vis[sg[to[j]]]=0; 
		}
		for(int i=1,mul=1;i<=n;i++) mul=mul*tmp%mod,sum[sg[i]]=(sum[sg[i]]+mul)%mod;
	}
}G[3];
signed main(){
	scanf("%lld",&n); 
	for(int i=0;i<3;i++) G[i].init();
	for(int i=0;i<512;i++) for(int j=0;j<512;j++) ans=(ans+G[0].sum[i]*G[1].sum[j]%mod*G[2].sum[i^j]%mod)%mod;
	printf("%lld",ans);
}