Introduction - If you have any usage issues, please Google them yourself
		 
#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <cstdio> 
#include <cmath> 
#include <string> 
#include <cstring> 
#include <cmath> 
#include <ctime> 
using namespace std 
const int maxn = 110005 
const int inf = 2000000005 
struct NODE{ 
 int y, dis 
 NODE(){ 
 } 
 NODE(int _y, int _dis){ 
 y = _y dis = _dis 
 } 
 bool operator <(const NODE &tmp)const{ 
 if(y == tmp.y) return dis < tmp.dis 
 return y < tmp.y 
 } 
} 
struct POINT{ 
 int x, y, dis 
 POINT() { 
 } 
 POINT(int _x, int _y, int _dis){ 
 x = _x 
 y = _y 
 dis = _dis 
 } 
}df[maxn], myque[1111111] 
int n, m, hash[maxn], num 
vector<NODE>mygraph[maxn] 
void init(){ 
 num = 0 
 for(int i = 0 i < maxn i++) mygraph[i].clear() 
} 
void readdata(){