N,M,L,K=map(int, input().split()) C,T=[],[] for i in range(M): x,y=map(int, input().split()) C.append((x+y,x,y)) for i in range(L): x,y=map(int, input().split()) T.append((x+y,x,y)) C=sorted(C) T=sorted(T) C.append((2*N+2,N,N)) E=[[0]*(N+2) for i in range(N+2)] #1:check 2:tiger for a,x,y in T: E[x][y]=2 #print(C) #print(T) dp=[[[0]*(N+3) for w in range(N+3)]for h in range(K+2)] dp[K][0][0]=1 mod=998244353 for i in range(M+1): if i==0: sx,sy=0,0 gx,gy=C[0][1],C[0][2] else: sx,sy=C[i-1][1],C[i-1][2] gx,gy=C[i][1],C[i][2] a,b=gx-sx,gy-sy F=[[[0]*(b+3) for w in range(a+3)]for h in range(K+3)] for k in range(K+1): F[k][0][0]=dp[k][sx][sy] dp=F for k in range(K,-1,-1): for x in range(gx-sx+1): for y in range(gy-sy+1): dp[k][x][y]%=mod if E[sx+x][sy+y]==0: if x+1<=gx: dp[k][x+1][y]+=dp[k][x][y] if y+1<=gy: dp[k][x][y+1]+=dp[k][x][y] else: if k>0: if x+1<=gx: dp[k-1][x+1][y]+=dp[k][x][y] if y+1<=gy: dp[k-1][x][y+1]+=dp[k][x][y] ans=0 for k in range(K+1): ans+=dp[k][gx-sx][gy-sy] ans%=mod print(ans)