#include<cstdio>
#include<queue>
#include<vector>
using namespace std;
struct Node{
int v,dis;
};
const int maxn=1002;
const int inf=1000000000;
vector<Node> adj[maxn];
int n,d[maxn],num[maxn];
bool inq[maxn]={false};
bool spfa(int s){
fill(d,d+maxn,inf);
fill(num,num+maxn,0);
fill(inq,inq+maxn,false);
queue<int> q;
q.push(s);
inq[s]=true;
num[s]++;
d[s]=0;
while(!q.empty()){
int u=q.front();
q.pop();
inq[u]=false;
for(int i=0;i<adj[u].size();i++){
int v=adj[u][i].v;
int dis=adj[u][i].dis;
if(d[u]+dis<d[v]){
d[v]=d[u]+dis;
if(!inq[v]){
q.push(v);
inq[v]=true;
num[v]++;
if(num[v]>=n) return false;
}
}
}
}
return true;
}
int main(){
return 0;
}