#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define x first
#define LL long long
#define ULL unsigned long long 
#define y second
#define sqr(x) ((x)*(x))
#define pii pair<int,int>
#define pll pair<LL,LL>
#define pdd pair<double,double>
#define MEM(x) memset(x,0,sizeof(x))
#define pi acos(-1)
#define MEMS(x) memset(x,-1,sizeof(x))
using namespace std;
int val[3][100005];
vector<int> v[3][100005];
vector<int> num[3][100005];
int number=716070898;
int mod=998244353;
LL f_pow(LL a,LL b){
    LL res=1,temp=a;
    while(b){
        if(b&1)res=res*temp%mod;
        temp=temp*temp%mod;
        b>>=1;
    }
    return res;
}
int test[30][30][30];
void T(){
    //queue<tuple<int,int,int> > q;
    //q.push(mp(0,0,0));
    int n=30;
    while(true){
        int Min=1e9,x,y,z;
        for(int i = 0;i<n;i++){
            for(int j=0;j<n;j++){
                for(int k=0;k<n;k++){
                    if(!test[i][j][k]){
                        if(i+j+k<Min){
                            Min=i+j+k;
                            x=i;
                            y=j;
                            z=k;
                        }
                    }
                }
            }
        }
        if(Min==1e9)break;
        if(x<=y&&y<=z&&x!=0&&x!=1)
        printf("%d\n",x^y^z);
        for(int i = 0;i<n;i++){
            test[x][y][i]=1;
            test[x][i][z]=1;
            test[i][y][z]=1;
        }
    }
}
int main(){ 
   //T();
    int n;
    scanf("%d",&n);
    int Max[3]={0,0,0};
    for(int i = 0;i<3;i++){
        int m;
        scanf("%d",&m);
        for(int j =0;j<m;j++){
            int x,y;
            scanf("%d %d",&x,&y);
            if(x>y)swap(x,y);
            v[i][x].pb(y);
        }
        for(int j = n;j>=1;j--){
            vector<int> arr;
            for(auto it:v[i][j]){
                arr.pb(val[i][it]);
            }
            sort(arr.begin(),arr.end());
            arr.resize(unique(arr.begin(),arr.end())-arr.begin());
            val[i][j]=arr.size();
            for(int k = 0;k<arr.size();k++){
                if(arr[k]!=k){
                    val[i][j]=k;
                    break;
                }
            }
           // if(val[i][j]<2){
            num[i][val[i][j]].pb(j);
            Max[i]=max(Max[i],val[i][j]);
            //}
        }
    }
    LL ans=0;
    LL val[3][100005];//,b[2]={0,0},c[2]={0,0};
    LL sum[3];
    MEM(val);
    MEM(sum);
    for(int i =0;i<3;i++){
        for(int j=0;j<100005;j++){
            for(auto it:num[i][j]){
                val[i][j]+=f_pow(number,it);
                val[i][j]%=mod;
            }
            if(j>1)sum[i]+=val[i][j],sum[i]%=mod;
        }
    }
    for(int i = 0;i<=Max[0];i++){
        for(int j = 0;j<=Max[1];j++){
            ans+=val[0][i]*val[1][j]%mod*val[2][i^j]%mod;
        }
    }
    //ans+=val[0][0]*val[1][0]%mod*val[2][0]%mod;
    ans=(ans%mod+mod)%mod;
    printf("%lld\n",ans);
    /*
    for(int i = 0;i<num[0][0].size();i++){
        a[0]+=f_pow(number,num[0][0][i]);
        a[0]%=mod;
    }
    for(int i = 0;i<num[0][0].size();i++){
        for(int j=0;j<num[1][0].size();j++){
            for(int k=0;k<num[2][0].size();k++){
                ans+=f_pow(number,num[0][0][i]+num[1][0][j]+num[2][0][k]);
                ans%=mod;
            }
        }
    }
    for(int i = 0;i<num[0][0].size();i++){
        for(int j=0;j<num[1][1].size();j++){
            for(int k=0;k<num[2][1].size();k++){
                ans+=f_pow(number,num[0][0][i]+num[1][1][j]+num[2][1][k]);
                ans%=mod;
            }
        }
    }
    for(int i = 0;i<num[0][1].size();i++){
        for(int j=0;j<num[1][0].size();j++){
            for(int k=0;k<num[2][1].size();k++){
                ans+=f_pow(number,num[0][1][i]+num[1][0][j]+num[2][1][k]);
                ans%=mod;
            }
        }
    }
    for(int i = 0;i<num[0][1].size();i++){
        for(int j=0;j<num[1][1].size();j++){
            for(int k=0;k<num[2][0].size();k++){
                ans+=f_pow(number,num[0][1][i]+num[1][1][j]+num[2][0][k]);
                ans%=mod;
            }
        }
    }*/
    //printf("%lld\n",ans);
}
/*

5
AACCMMAA
A
AA
MM
ACA
ACMAA


5
0 9 7 1 100
-1 0 -1 -1 91
-1 5 0 -1 96
-1 8 9 0 99
-1 -1 -1 -1 0
3 4
3 5
5 6
5 7
3 or 4
3 or 5
5 or 6
5 or 7

dp[x]=max(dp[x-w_i*j]+j*t_i-delta t_i*j*(j-1)/2)
dp[x]=max(dp[j]+x*t_i-j*t_i-delta t_i*(x-j)*(x-j-1)/2)
dp[x]=max(dp[j]-j*t_i-delta t_i *(j^2/2+j/2) - 
        delta t_i * xj + x*t_i + delta t_i * (x^2/2-x/2))
dp[x]=max(dp[j] + g(j) - delta t_i *xj + w(i) )
g(j)= dp[j]-j*t_i-delta t_i *(j^2/2+j/2)
w(i)=  x*t_i + delta t_i * (x^2/2-x/2)
x^2/2 -xj -x/2  +j^2/2 +j/2
*/

/*
 

*/

Measured memory_bytes: 24572