1
2 2
1 1
1 2
 1
1 3
3
1 2 3
 1
1 1
1000
1000
 1
2 2
2 2
2 2
 5
4 5
10 8 6 4
1 2 3 4 5
1 1
3
3
1 1
3
2
5 3
1000 2 2 2 3
3 1 5
5 5
1 2 3 4 5
1 2 3 4 5
 1
4 4
1 1 1 1
1 2 3 4
 1
2 3
1 1
1 2 3

YES
1 1
 YES
1 3
 YES
1 1000
 YES
1 2
 YES
1 4
YES
1 3
NO
YES
1 3
YES
1 1
 YES
1 1
 YES
1 1

import java.util.*;
public class nearly_prime {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		while(t-->0) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			int a[] = new int[n];
			int b[] = new int[m];
			for(int i=0;i<n;i++) {
				a[i] = sc.nextInt();
			}
			for(int i=0;i<m;i++) {
				b[i] = sc.nextInt();
			}
			int s = 0;
			int i = 0;
			int j = 0;
			boolean present = false;
			while(i<n && j<m) {
				if(b[j] == a[i]) {
					s = b[j];
					present = true;
					break;
				}
				if(a[i]>b[j]) {
					j++;
					i--;
				}
				i++;
			}
			if(present) {
				System.out.println("YES");
				System.out.println(1+" "+s);
			}
			else {
				System.out.println("NO");
			}
		}
}
}