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

#define int long long

typedef long long ll;
typedef pair<int,int>pint;
typedef vector<int>vint;
typedef vector<pint>vpint;
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(v) (v).begin(),(v).end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
template<class T,class U>void chmin(T &t,U f){if(t>f)t=f;}
template<class T,class U>void chmax(T &t,U f){if(t<f)t=f;}

const int SIZE=100000;
int N,X,Y;
vint G[SIZE];

signed main(){
    cin>>N>>X>>Y;X--;Y--;
    rep(i,N-1){
        int a,b;
        cin>>a>>b;
        a--;b--;
        G[a].pb(b);
        G[b].pb(a);
    }

    if(N&1){
        puts("No");
        return 0;
    }

    int x=0,y=0,z=0;
    rep(i,N){
        if(G[i].size()==1)x++;
        else if(G[i].size()==2)y++;
        else if(G[i].size()==3)z++;
    }

    if(x+y+z!=N){
        puts("No");
        return 0;
    }

    if(x==2&&y==N-2){
        bool f1=false,f2=false;
        rep(i,2){
            int u;
            if(i==0){
                rep(j,N)if(G[j].size()==1)u=j;
            }
            else{
                for(int j=N-1;j>=0;j--)if(G[j].size()==1)u=j;
            }
            int uu=u,p=-1;
            rep(j,N/2-1){
                int nex;
                for(int to:G[uu]){
                    if(to==p)continue;
                    nex=to;
                }
                p=uu;
                uu=nex;
            }
            if(f1==false&&(u==X||uu==X)){f1=true;}
            else if(f2==false&&(u==Y||uu==Y)){f2=true;}
            else{
                puts("No");
                return 0;
            }
        }
        puts("Yes");
    }
    else if(x==3&&z==1){
        int u;
        rep(i,N)if(G[i].size()==3)u=i;
        vector<pair<pint,int>>vec;
        rep(i,3){
            int uu=G[u][i];
            int p=u;
            int cnt=1;
            while(true){
                int nex=-1;
                for(int to:G[uu]){
                    if(to==p)continue;
                    nex=to;
                }
                if(nex==-1)break;
                p=uu;
                uu=nex;
                cnt++;
            }
            vec.pb(mp(mp(uu,G[u][i]),cnt));
        }
        if(vec[1].fi.fi==X||vec[1].fi.se==X)swap(vec[0],vec[1]);
        if(vec[2].fi.fi==X||vec[2].fi.se==X)swap(vec[0],vec[2]);
        if(vec[2].fi.fi==Y||vec[2].fi.se==Y)swap(vec[1],vec[2]);

        if((vec[0].fi.fi!=X&&vec[0].fi.se!=X)||(vec[1].fi.fi!=Y&&vec[1].fi.se!=Y)){
            puts("No");
            return 0;
        }
        if(vec[1].fi.fi==Y&&vec[1].se+vec[2].se+1==N/2&&vec[0].se==N/2)puts("Yes");
        else if(vec[0].fi.fi==X&&vec[0].se+vec[2].se+1==N/2&&vec[1].se==N/2)puts("Yes");
        else puts("No");
    }
    else if(x==4&&z==2){
        int u=-1,v;
        rep(i,N){
            if(G[i].size()==3){
                if(u==-1)u=i;
                else v=i;
            }
        }
        bool ok=false;
        for(int to:G[u]){
            if(to==v)ok=true;
        }
        if(!ok){
            puts("No");
            return 0;
        }
        rep(t,2){
            vpint vec;
            rep(i,3){
                int hoge=G[u][i];
                if(G[hoge].size()==3)continue;
                int uu=hoge,cnt=1,p=u;
                while(true){
                    int nex=-1;
                    for(int to:G[uu]){
                        if(to==p)continue;
                        nex=to;
                    }
                    if(nex==-1)break;
                    p=uu;
                    uu=nex;
                    cnt++;
                }
                vec.pb(pint(uu,cnt));
            }
            if((vec[0].fi==X||vec[0].fi==Y||vec[1].fi==X||vec[1].fi==Y)&&vec[0].se+vec[1].se+1==N/2){}
            else{
                puts("No");
                return 0;
            }
            swap(u,v);
        }
        puts("Yes");

    }
    else puts("No");
    return 0;
}

Measured memory_bytes: 8608