#include<bits/stdc++.h>#define Maxn 100000#define Maxm 200000#define INF 0x3f3f3f3fusingnamespacestd;typedeflonglongll;intn,m,s;inthead[Maxn+5],to[Maxm+5],nex[Maxm+5],w[Maxm+5],tot;intdis[Maxn+5];voidinit(){memset(head,-1,sizeof(head));tot=0;}voidadd(intx,inty,intz){to[++tot]=y;nex[tot]=head[x];w[tot]=z;head[x]=tot;}boolbf(ints){memset(dis,0x3f,sizeof(dis));dis[s]=0;boolflag;intT=n;while(T--){flag=false;for(inti=1;i<=n;i++){if(dis[i]==INF)continue;for(intj=head[i];j!=-1;j=nex[j]){if(dis[i]+w[j]<dis[to[j]]){dis[to[j]]=dis[i]+w[j];flag=true;}}}if(!flag)break;}returnflag;}intmain(){init();scanf("%d%d%d",&n,&m,&s);for(inti=0;i<m;i++){intx,y,z;scanf("%d%d%d",&x,&y,&z);add(x,y,z);}if(!bf(s)){for(inti=1;i<=n;i++){if(dis[i]==INF)dis[i]=(1ll<<31)-1;printf("%d ",dis[i]);}}elseprintf("Have at least one nagetive ring.");return0;}