#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int,int>;
using db = double;
const int N=5e3+10;
const int M=2e5+10;
struct Edge{int u,v,w;}edge[M];
bool cmp(Edge a,Edge b){
return a.w<b.w;
}
int s[N];
int find_set(int x){
if(x!=s[x]){
s[x]=find_set(s[x]);
}
return s[x];
}
int n,m;
void kruskal(){
sort(edge+1,edge+m+1,cmp);
for(int i=1;i<=n;i++) s[i]=i;
int ans=0,cnt=0;
for(int i=1;i<=m;i++){
if(cnt==n-1) break;
int e1=find_set(edge[i].u);
int e2=find_set(edge[i].v);
if(e1==e2) continue;
else{
ans+=edge[i].w;
s[e1]=e2;
cnt++;
}
}
if(cnt==n-1) cout<<ans<<endl;
else cout<<"orz"<<endl;
}
int main(){
std::ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
return 0;
}