#include <iostream>
#include <vector>
#include<unordered_map>
#include <string>
using namespace std;
#include<algorithm>
#include<set>
#define Fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
vector<pair<string,string>>ans;
unordered_map<string, string>mp;
string find(string second) {
string name=second;
auto it = mp.find(second);
if ( it!= mp.end()) {
name=find( it->second);
}
return name;
}
void sol() {
int n; cin >> n;
set<string>st;
while (n--) {
string old, newname; cin >> old >> newname; mp.insert({ old,newname });
}
for (auto it : mp) {
if (st.find(it.first) == st.end()) {
ans.push_back({ it.first, find(it.second) });
st.insert(it.second);
}
}
cout << ans.size() << endl;
reverse(ans.begin(), ans.end());
for (auto it : ans) {
cout << it.first << " " << it.second << endl;
}
}
int main() {
Fast
int t = 1;
while (t--) {
sol();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZTx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPHNldD4KCiNkZWZpbmUgRmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKCgp2ZWN0b3I8cGFpcjxzdHJpbmcsc3RyaW5nPj5hbnM7Cgp1bm9yZGVyZWRfbWFwPHN0cmluZywgc3RyaW5nPm1wOwpzdHJpbmcgZmluZChzdHJpbmcgc2Vjb25kKSB7CiAgICBzdHJpbmcgbmFtZT1zZWNvbmQ7CiAgICBhdXRvIGl0ID0gbXAuZmluZChzZWNvbmQpOwogICAgaWYgKCBpdCE9IG1wLmVuZCgpKSB7CiAgICAgICAgbmFtZT1maW5kKCBpdC0+c2Vjb25kKTsKICAgIH0KICAgIHJldHVybiBuYW1lOwp9CnZvaWQgc29sKCkgewogICAKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIHNldDxzdHJpbmc+c3Q7CiAgICB3aGlsZSAobi0tKSB7CiAgICAgICAgc3RyaW5nIG9sZCwgbmV3bmFtZTsgY2luID4+IG9sZCA+PiBuZXduYW1lOyBtcC5pbnNlcnQoeyBvbGQsbmV3bmFtZSB9KTsKICAgIH0KICAgIGZvciAoYXV0byBpdCA6IG1wKSB7CiAgICAgICAgaWYgKHN0LmZpbmQoaXQuZmlyc3QpID09IHN0LmVuZCgpKSB7CiAgICAgICAgICAgIGFucy5wdXNoX2JhY2soeyBpdC5maXJzdCwgZmluZChpdC5zZWNvbmQpIH0pOwogICAgICAgICAgICBzdC5pbnNlcnQoaXQuc2Vjb25kKTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFucy5zaXplKCkgPDwgZW5kbDsKICAgIHJldmVyc2UoYW5zLmJlZ2luKCksIGFucy5lbmQoKSk7CiAgICBmb3IgKGF1dG8gaXQgOiBhbnMpIHsKICAgICAgICBjb3V0IDw8IGl0LmZpcnN0IDw8ICIgIiA8PCBpdC5zZWNvbmQgPDwgZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBGYXN0CiAgICAgICAgaW50IHQgPSAxOwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbCgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=