#include <bits/stdc++.h>
using namespace std;

int v,e;
set<pair<int,pair<int,int>>> g;

int a[10005]={};

void init(){
  for(int i=0;i<10005;i++)a[i]=i;
}

int find(int x){
  if(a[x]==x)return x;
  else return (a[x]=find(a[x]));
}

void un(int x,int y){
  a[find(x)]=y;
}

int main() {
  long long c=0;
  init();
  cin>>v>>e;
  for(int i=0;i<e;i++){
    int a,b,l;cin>>a>>b>>l;
    g.insert({l,{a,b}});
  }
  for(auto p:g){
    if(find(p.second.first)!=find(p.second.second)){
      c+=p.first;
      un(p.second.first,p.second.second);
    }
  }
  cout<<c<<endl;
}
#include<bits/stdc++.h>
using namespace std;
#define int  long long
#define tc(t)  int t; cin>>t; while(t--)
#define f(n)    for(int i=0;i<n;i++)
#define endl   "\n"







int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
     int n,m;
     cin>>n>>m;
     vector<pair<int,string>>v(m);
     vector<pair<int,int>>dp(n,{0,0});
     for(int i=0;i<m;i++){
         int q;
         string verdict;
         cin>>q>>verdict;
         v[i]={q,verdict};
     }

     int correct=0,penality=0;
     for(int i=0;i<m;i++)
     {
       int qn=v[i].first;
       string verdict=v[i].second;
       if(verdict=="WA")
       {
           if(dp[qn-1].second==0)
           {dp[qn-1].first++;}

       } else{
           if(dp[qn-1].second==0) {
               dp[qn - 1].second = 1;
               correct++;
               penality+=dp[qn-1].first;
           }
       }


     }
     cout<<correct<<" "<<penality<<endl;










}