Triangle

Accepts: 0
Submissions: 8
Time Limit: 15000/10000 MS (Java/Others)
Memory Limit: 262144/262144 K (Java/Others)
Problem Description
Soda has a complete undirected graph with $n$ vertices. He wants to color the edges with $m$ different colors conveniently labeled from $1$ to $m$. He first selects $p$ edges and colors them. Then he will randomly color the rest edges. He wants to know the total number of different good triangles among all possible graphs. Let $i, j, k$ $(i < j < k)$ be three vertices in the graph. If there's an edge between $i$ and $j$, an edge between $j$ and $k$, an edge between $k$ and $i$. Then we call the tuple $(i, j, k)$ $(i < j < k)$ is a triangle in the graph. Let the colors for edge $(i,j)$, $(j,k)$, $(k,j)$ be $x$, $y$ and $z$. If $x \ne y$ and $x \ne z$ and $y \ne z$, then we call the triangle good. Two triangles are considered different if at least one of the six numbers $(i, j, k, x, y, z)$ is different.
Input
There are multiple test cases. The first line of input contains an integer $T$ $(1 \le T \le 100)$, indicating the number of test cases. For each test case: The first line contains three integers $n$, $m$ and $p$, $(3 \le n \le 100000, 1 \le m, p \le 200000)$. Each of the next $p$ lines contains three integer $u, v, c$ $(1 \le u < v \le n, 1 \le c \le m)$ which means the edge $(u, v)$ is colored with color $c$. Each edge will be given at most once. Most cases are small.
Output
For each test case, output the total number of good triangles modulo $2^{32}$.
Sample Input
1
4 6 6
1 2 1
1 3 2
1 4 3
2 3 4
2 4 5
3 4 6
Sample Output
4
Hint
Huge input data, scanf is recommended.