#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100000;
int a[N+100],cnt[N+100];
struct edges
{
int to;
int next;
}edge[N+100];
int head[N+100],mx;
void add(int u,int v)
{
edge[mx].to=v;
edge[mx].next=head[u];
head[u]=mx++;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(head,0,sizeof(head));
memset(a,0,sizeof(a));
memset(cnt,0,sizeof(cnt));
mx=1;
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<k;i++)
{
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
a[u]++;
cnt[v]++;
}
ll ans=0;
for(int i=1;i<=n;i++)
{
ll temp=0;
for(int j=head[i];j;j=edge[j].next)
{
temp+=(cnt[edge[j].to]-1);
}
ans+=(a[i]-1)*temp;
}
printf("%lld\n",ans*2);
}
return 0;
}
Count the Sheep