﻿#include <complex>
#include <queue>
#include <set>
#include <unordered_set>
#include <list>
#include <chrono>
#include <random>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <stack>
#include <iomanip>
#include <fstream>

using namespace std;

const int N = 200001;
int cntA[N], cntB[N], A[N], B[N];

int gcd(int a, int b)
{
    if (b == 0) return a;
    else return gcd(b, a % b);
}

int lcm(int a, int b)
{
    return a * b / gcd(a, b);
}

bool isPrime(int n)
{
    int d = 2;
    while (d * d <= n && n % d) d++;
    return n - 1 && d * d > n;
}

void localTest()
{
    int a, b, k; cin >> a >> b >> k;
    memset(A, 0, N);
    memset(B, 0, N);
    memset(cntA, 0, N);
    memset(cntB, 0, N);
    for (int i = 0; i < k; i++)
    {
        cin >> A[i];
        cntA[A[i]]++;
    }
    for (int i = 0; i < k; i++)
    {
        cin >> B[i];
        cntB[B[i]]++;
    }

    long long ans = 0;
    for (int i = 0; i < k; i++) ans += k - cntA[A[i]] - cntB[B[i]] + 1;

    cout << ans / 2 << "\n";
    //не недооценивай первую задачу, если она для первого и второго дивизионов
    //внимательно читай условия
    //всё будет хорошо
}

int main()
{
    cin.tie(nullptr)->sync_with_stdio(false);
    int globalTests = 1;

    cin >> globalTests;

    while (globalTests--) localTest();
}