#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int n,h,w,f[N<<1],si[N<<1];
bool vis[N<<1];
struct node
{
    int a,x,y;
    bool operator<(const node&o)const
    {
        return a>o.a;
    }
}a[N];
int getf(int x){return f[x]==x?f[x]:f[x]=getf(f[x]);}
int main()
{
    scanf("%d%d%d",&n,&h,&w);
    for(int i=1;i<=n;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].a),a[i].y+=h;
    sort(a+1,a+1+n);
    for(int i=1;i<=h+w;i++)
        f[i]=i,si[i]=1;
    ll ans=0;
    for(int i=1;i<=n;i++)
    {
        int fx=getf(a[i].x),fy=getf(a[i].y);
        if(fx!=fy){f[fy]=fx;si[fx]+=si[fy];}
        if(si[fx])
        {
            ans+=a[i].a;
            si[fx]--;
        }
    }
    printf("%lld\n",ans);
}
