#include using namespace std; #define int long long #define double long double #define vi vector #define vvi vector #define pii pair #define piii pair #define viii vector #define vii vector #define fi first #define se second #define pb push_back const double eps=1e-12; int n; vvi con; int trywithroot(int ac, int ant, int r){ //cerr << ' ' << ac << ' ' << ant << endl; vi vec; for(int y:con[ac]){ if (y!=ant) vec.pb(trywithroot(y,ac,r)); } sort(vec.begin(),vec.end()); int res=1; for (int x:vec) if (res>=x) res+=x; return res; } bool tryroot(int r){ cerr << r << endl; return trywithroot(r,-1,r)==n; } bool ans=0; int rec(int ac, int ant){ //cerr << ac << ' ' << ant << endl; vi vec; for (int y:con[ac]) if (y!=ant) vec.pb(rec(y,ac)); int s,m; s=m=0; for (int y:vec){ s+=y; m=max(y,m); } if (m<=n/2+2 && n-s<=n/2+2) ans= ans || tryroot(ac); return s+1; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; con=vvi(n); for (int i=0;i> a >> b; a--;b--; con[a].pb(b); con[b].pb(a); } rec(0,-1); if (ans) cout << "YES\n"; else cout << "NO\n"; }