#include using lint=long long; using real=long double; int main(){ std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false); std::cout.setf(std::ios_base::fixed);std::cout.precision(15); lint n;std::cin>>n; std::vector>g(n); for(lint i=0;i>u>>v;u--,v--; g.at(u).push_back(v); g.at(v).push_back(u); } std::vector>dp(n,std::pair{0,1}); auto dfs=[&](auto&&f,lint x,lint p)->void{ for(lint y:g.at(x)){ if(y==p)continue; f(f,y,x); auto&&[a,b]=dp.at(y); std::get<0>(dp.at(x))+=std::max(a,b); std::get<1>(dp.at(x))+=a; } }; dfs(dfs,0,0); std::cout<(dp.at(0)),std::get<1>(dp.at(0)))<<'\n'; }