/** * Created by ktao on 10/18/16. */ import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ Scanner scanner = new Scanner(System.in); int numQueries = Integer.parseInt(scanner.nextLine()); for(int i = 0; i < numQueries; i++){ int numPoints = Integer.parseInt(scanner.nextLine()); List points = new ArrayList(); for(int j = 0; j < numPoints; j++){ int[] point = parseIntsFromStringArray(scanner.nextLine().split(" ")); points.add(point); } System.out.println(assessRectangularity(points)); } } private static int[] parseIntsFromStringArray(String[] string) { int[] result = new int[string.length]; for (int i = 0; i < result.length; i++) { result[i] = Integer.parseInt(string[i]); } return result; } private static String assessRectangularity(List points){ Map> xMap = new TreeMap>(); Map> yMap = new TreeMap>(); for(int[] point: points){ if(xMap.get(point[0]) == null){ xMap.put(point[0], new ArrayList()); } if(yMap.get(point[1]) == null){ yMap.put(point[1], new ArrayList()); } xMap.get(point[0]).add(point); yMap.get(point[1]).add(point); } if(xMap.size() <= 2){ return "YES"; } if(yMap.size() <= 2){ return "YES"; } Set pointsCopy = new HashSet(points); Integer[] xKeys = xMap.keySet().toArray(new Integer[xMap.size()]); Integer[] yKeys = yMap.keySet().toArray(new Integer[yMap.size()]); List rightMost = xMap.get(xKeys[xKeys.length - 1]); List leftMost = xMap.get(xKeys[0]); List topMost = yMap.get(yKeys[yKeys.length - 1]); List bottomMost = yMap.get(yKeys[0]); deleteFromSet(pointsCopy, rightMost); deleteFromSet(pointsCopy, leftMost); deleteFromSet(pointsCopy, topMost); deleteFromSet(pointsCopy, bottomMost); if(pointsCopy.size() > 0){ return "NO"; } return "YES"; } private static void deleteFromSet(Set pointsCopy, List pointsInLine) { for(int[] point : pointsInLine){ pointsCopy.remove(point); } } }