## https://yukicoder.me/problems/no/2733 MOD = 998244353 def main(): N, M, K = map(int, input().split()) next_nodes = [[] for _ in range(N)] for _ in range(M): u, v = map(int, input().split()) next_nodes[u - 1].append(v - 1) next_nodes[v - 1].append(u - 1) # 1回目 pow_number = 0 dp = [[0] * N for _ in range((K + 1) ** N)] for i in range(N): pow_number = (K + 1) ** i dp[pow_number][i] = 1 for bit in range(1, (K + 1) ** N): x = [0] * N bit0 = bit for i in range(N): x[i] = bit0 % (K + 1) bit0 //= (K + 1) for from_i in range(N): if x[from_i] == 0: continue for to_i in next_nodes[from_i]: if x[to_i] == K: continue new_bit = bit + (K + 1) ** to_i dp[new_bit][to_i] += dp[bit][from_i] dp[new_bit][to_i] %= MOD answer = 0 for i in range(N): answer += dp[-1][i] answer %= MOD print(answer) if __name__ == "__main__": main()