#include using namespace std; #define rep(i,n) for (int i = 0; i< (n); ++i) #define repi(i, a, b) for (int i = (a); i < (b); ++i) #define all(x) (x).begin(), (x).end() #define fore(i, a) for(auto &i:a) using ll = long long; //https://yukicoder.me/problems/no/3196 //b:999999797, 999999883, 1000000007, 1000000009, 2147483647, 2147771771 struct roling_hash{ vector H, B; ll n, b, mod; string s; roling_hash(string s_,ll b_, ll mod_){ s = s_;b = b_; mod = mod_; n = s.size()+1; H.assign(n,0); B.assign(n,0); H[0] = 0; B[0] = 1; repi(i, 1, n){ H[i] = (b*H[i-1]%mod+s[i-1])%mod; B[i] = B[i-1]*b%mod; } } ll get_hash(ll l,ll r){ return (H[r+1] - B[r-l+1]*H[l]%mod+mod)%mod; } ll get_hash(string t){ ll res=0; ll sz = t.size(); rep(i, sz){ res += B[sz-1-i]*t[i]%mod; res %= mod; } return res; } }; long long random_large_ll(ll m, ll M) { static std::random_device rd; static std::mt19937_64 gen(rd()); std::uniform_int_distribution dist(m, M); return dist(gen); } int main() { ll n; cin >> n; map id; vector s(n), t(n); roling_hash RH("____________________", 233123, 1000000007); bool flag = true; rep(i, n){ string a, b; cin >> a >> b; s[i] = RH.get_hash(a); t[i] = RH.get_hash(b); if(id.count(s[i]))id[s[i]]++; else id[s[i]] = 1; if(id.count(t[i]))id[t[i]]++; else id[t[i]] = 1; } rep(i, n){ if(id[s[i]] > 1 && id[t[i]] > 1)flag = false; } if(flag)cout << "Yes" << endl; else cout << "No" << endl; }