#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define ld long double
#define fastio                      \
  ios_base::sync_with_stdio(false); \
  cin.tie(NULL);
#define NO cout << "NO" << endl
#define YES cout << "YES" << endl
#define vec vector<ll>
#define intarr(arr, n)       \
  ll arr[n];                 \
  for (ll i = 0; i < n; i++) \
  cin >> arr[i]
#define loop(i, a, b, c) for (ll i = a; i < b; i += c)
#define pb push_back
#define mkp make_pair
#define printarr(arr, n)     \
  for (ll i = 0; i < n; i++) \
  cout << arr[i] << " "

ll Ceil(ll a,ll b){
   if(a%b==0) return a/b;
   else return a/b+1;
}
bool isSubSequence(string str1, string str2, int m, int n)
{
  if (m == 0) return true;
  if (n == 0) return false;
  if (str1[m - 1] == str2[n - 1])
    return isSubSequence(str1, str2, m - 1, n - 1);
  return isSubSequence(str1, str2, m, n - 1);
}

class node{
  public:
  ll start,end,startc,endc,ans;
};

void buildSegment(node tree[],ll a[],ll index,ll s,ll e){
  //if(s>e) return;
  if(s==e){
    tree[index].start=a[s];
    tree[index].end=a[s];
    tree[index].startc=1;
    tree[index].endc=1;
    tree[index].ans=1;
    return;
  }
  ll mid=(s+e)/2;
  buildSegment(tree,a,2*index,s,mid);
  buildSegment(tree,a,2*index+1,mid+1,e);
  node left=tree[2*index];
  node right=tree[2*index+1];
  tree[index].start=left.start;
  tree[index].end=right.end;
  if(left.start==right.start){
     tree[index].startc=left.startc+right.startc;
  }
  else{
    tree[index].startc=left.startc;
  }
  if(left.end==right.end){
     tree[index].endc=left.endc+right.endc;
  }
  else{
    tree[index].endc=right.endc;
  }
  ll middle=0;
  if(left.end==right.start){
    middle=left.endc+right.startc;
  }
  tree[index].ans=max(middle,max(left.ans,right.ans));
  return;
}

node frequent(node tree[],ll index,ll s,ll e,ll x,ll y){
  node r;
  
  //cout<<s<<" "<<e<<" "<<tree[index].sum<<" "<<
  //tree[index].maxSum<<" "<<tree[index].leftSum<<" "<<tree[index].rightSum<<endl;
  if(y<s or x>e) {
    r.start=-1e9;
    r.end=-1e9;
    r.startc=0;
    r.endc=0;
    r.ans=0;
     return r;
  }
  if(s>=x and e<=y) return tree[index];
  ll mid=(s+e)/2;

  if(y<=mid){
    return frequent(tree,2*index,s,mid,x,y);
  }
  if(s>mid){
    return frequent(tree,2*index+1,mid+1,e,x,y);
  }
  
  node left=frequent(tree,2*index,s,mid,x,y);
  node right=frequent(tree,2*index+1,mid+1,e,x,y);
  r.start=left.start;
  r.end=right.end;
  if(left.start==right.start){
     r.startc=left.startc+right.startc;
  }
  else{
    r.startc=left.startc;
  }
  if(left.end==right.end){
     r.endc=left.endc+right.endc;
  }
  else{
    r.endc=right.endc;
  }
  ll middle=0;
  if(left.end==right.start){
    middle=left.endc+right.startc;
  }
  
  r.ans=max(middle,max(left.ans,right.ans));
  return r;
}

void solve()
{  
  ll a,b,c;
  cin>>a>>b>>c;
  if((a==b and b==c) or (a!=b and a!=c and b!=c ))
  cout<<"No";
  else
  {
    cout<<"Yes";
  }
  
  return;
}

int main()
{
  fastio;
  ll t;
  t = 1;
  //cin >> t;
  //ll sum = 0;
  while (t--)
  {
    //ll next = solve();
    //cout<<next<<endl;
    //sum += next;
    solve();
    
  }
  //cout << sum;
  cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";

  return 0;
}


Measured memory_bytes: 256