import java.util.Scanner;
public class Main {
static int dx[]= {-1,0,1,0};
static int dy[]= {0,1,0,-1};
static int sero;
static int garo;
static int arr[][];
static boolean visit[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test_case= sc.nextInt();
for(int t=0;t<test_case;t++) {
garo = sc.nextInt();
sero = sc.nextInt();
int score = sc.nextInt();
int result=0;
arr= new int[sero][garo];
visit=new boolean[sero][garo];
for(int i=0;i<score;i++) {
int garoy= sc.nextInt();
int serox= sc.nextInt();
arr[serox][garoy]=1;
}
for(int i=0;i<sero;i++) {
for(int j=0;j<garo;j++) {
if(arr[i][j]==1) {
result++;
DFS(i,j);
}
}
}
//출력
System.out.println(result);
}
}
private static void DFS(int x, int y) {
//종료조건
for(int i=0;i<4;i++) {
int rx= x+dx[i];
int ry = y+dy[i];
if(rx<0||ry<0||rx>=sero||ry>=garo) {
continue;
}if(arr[rx][ry]==1&&visit[rx][ry]==false) {
visit[rx][ry]=true;
arr[rx][ry]=0;
DFS(rx,ry);
}
}
return;
}
}