#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;
}