import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;import java.util.Comparator;publicclassMain{staticint[] cnt =newint[100000+5];staticboolean[] st =newboolean[100000+5];publicstaticvoidmain(String[] args){
Scanner in =newScanner(System.in);int n = in.nextInt();int d = in.nextInt();int k = in.nextInt();int x, y;
ArrayList<Node> ls =newArrayList<Node>();for(int i =0; i < n; i ++){
x = in.nextInt();
y = in.nextInt();
ls.add(newNode(x, y));}
Collections.sort(ls,newcmp());for(int i =0, j =0; i < n; i ++){int id = ls.get(i).y;
cnt[id]++;while(ls.get(i).x - ls.get(j).x >= d){
cnt[ls.get(j).y]--;
j ++;}if(cnt[id]>= k) st[id]=true;}for(int i =0; i <=100000; i ++){if(st[i]) System.out.println(i);}}staticclasscmpimplementsComparator<Node>{publicintcompare(Node a, Node b){if(a.x < b.x)return-1;elseif(a.x > b.x)return1;elsereturn0;}}staticclassNode{int x, y;publicNode(int x,int y){this.x = x;this.y = y;}}}
import java.util.Scanner;import java.util.Queue;import java.util.LinkedList;publicclassMain{publicstaticvoidmain(String[] args){
Scanner in =newScanner(System.in);int T = in.nextInt();while(T -->0){
n = in.nextInt();
m = in.nextInt();
in.nextLine();
maze =newchar[n +5][m +5];for(int i =0; i < n; i ++){
maze[i]= in.nextLine().toCharArray();}for(int i =0; i < n; i ++){for(int j =0; j < m; j ++){if(maze[i][j]=='S'){
sx = i;
sy = j;}if(maze[i][j]=='E'){
ex = i;
ey = j;}}}int ans =bfs();if(ans ==-1) System.out.println("oop!");else System.out.println(ans);}}staticint n, m;staticint sx, sy, ex, ey;staticchar[][] maze;staticboolean[][] vis;staticint[] dx =newint[]{-1,0,1,0};staticint[] dy =newint[]{0,-1,0,1};staticintbfs(){
Queue<Node> q =newLinkedList<Node>();
vis =newboolean[n +5][m +5];
vis[sx][sy]=true;
q.offer(newNode(sx, sy,0));while(!q.isEmpty()){
Node now = q.poll();if(now.x == ex && now.y == ey)return now.step;for(int i =0; i <4; i ++){int tx = now.x + dx[i];int ty = now.y + dy[i];if(tx <0|| tx >= n || ty <0|| ty >= m)continue;if(maze[tx][ty]=='#')continue;if(vis[tx][ty])continue;if(!vis[tx][ty]){
vis[tx][ty]=true;
q.offer(newNode(tx, ty, now.step +1));}}}return-1;}staticclassNode{int x, y, step;publicNode(int x,int y,int step){this.x = x;this.y = y;this.step = step;}}}
双指针与BFSimport java.util.ArrayList;import java.util.Collections;import java.util.Scanner;import java.util.Comparator;public class Main { static int[] cnt = new int[100000 + 5]; static boolean[] st = new boolean[100000 + 5]; public static void