/* cerberus97 - Hanit Banga */
#include <iostream>
#include <iomanip>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
#define pb push_back
#define fast_cin() ios_base::sync_with_stdio(false); cin.tie(NULL)
typedef long long ll;
typedef long double ld;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
// 2-SAT solver based on Kosaraju's algorithm.
// Variables are 0-based. Positive variables are stored in vertices 2n, corresponding negative variables in 2n+1
// TODO: This is quite slow (3x-4x slower than Gabow's algorithm)
struct TwoSat {
int n;
vector<vector<int> > adj, radj, scc;
vector<int> sid, vis, val;
stack<int> stk;
int scnt;
// n: number of variables, including negations
TwoSat(int n): n(n), adj(n), radj(n), sid(n), vis(n), val(n, -1) {}
// adds an implication
void impl(int x, int y) { adj[x].push_back(y); radj[y].push_back(x); }
// adds a disjunction
void vee(int x, int y) { impl(x^1, y); impl(y^1, x); }
// forces variables to be equal
void eq(int x, int y) { impl(x, y); impl(y, x); impl(x^1, y^1); impl(y^1, x^1); }
// forces variable to be true
void tru(int x) { impl(x^1, x); }
void dfs1(int x) {
if (vis[x]++) return;
for (int i = 0; i < adj[x].size(); i++) {
dfs1(adj[x][i]);
}
stk.push(x);
}
void dfs2(int x) {
if (!vis[x]) return; vis[x] = 0;
sid[x] = scnt; scc.back().push_back(x);
for (int i = 0; i < radj[x].size(); i++) {
dfs2(radj[x][i]);
}
}
// returns true if satisfiable, false otherwise
// on completion, val[x] is the assigned value of variable x
// note, val[x] = 0 implies val[x^1] = 1
bool two_sat() {
scnt = 0;
for (int i = 0; i < n; i++) {
dfs1(i);
}
while (!stk.empty()) {
int v = stk.top(); stk.pop();
if (vis[v]) {
scc.push_back(vector<int>());
dfs2(v);
scnt++;
}
}
for (int i = 0; i < n; i += 2) {
if (sid[i] == sid[i+1]) return false;
}
vector<int> must(scnt);
for (int i = 0; i < scnt; i++) {
for (int j = 0; j < scc[i].size(); j++) {
val[scc[i][j]] = must[i];
must[sid[scc[i][j]^1]] = !must[i];
}
}
return true;
}
};
int main() {
fast_cin();
TwoSat TS(6);
TS.impl(0, 4);
TS.impl(2, 5);
cout << TS.two_sat() << endl;
for (int i = 0; i < 6; ++i) {
cout << i << ' ' << TS.val[i] << endl;
}
}
LyogY2VyYmVydXM5NyAtIEhhbml0IEJhbmdhICovCgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmFzdF9jaW4oKSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgcGFpciA8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyIDxsbCwgbGw+IHBsbDsKCiAgCi8vIDItU0FUIHNvbHZlciBiYXNlZCBvbiBLb3NhcmFqdSdzIGFsZ29yaXRobS4KLy8gVmFyaWFibGVzIGFyZSAwLWJhc2VkLiBQb3NpdGl2ZSB2YXJpYWJsZXMgYXJlIHN0b3JlZCBpbiB2ZXJ0aWNlcyAybiwgY29ycmVzcG9uZGluZyBuZWdhdGl2ZSB2YXJpYWJsZXMgaW4gMm4rMQovLyBUT0RPOiBUaGlzIGlzIHF1aXRlIHNsb3cgKDN4LTR4IHNsb3dlciB0aGFuIEdhYm93J3MgYWxnb3JpdGhtKQpzdHJ1Y3QgVHdvU2F0IHsKCWludCBuOwoJdmVjdG9yPHZlY3RvcjxpbnQ+ID4gYWRqLCByYWRqLCBzY2M7Cgl2ZWN0b3I8aW50PiBzaWQsIHZpcywgdmFsOwoJc3RhY2s8aW50PiBzdGs7CglpbnQgc2NudDsKCQoJLy8gbjogbnVtYmVyIG9mIHZhcmlhYmxlcywgaW5jbHVkaW5nIG5lZ2F0aW9ucwoJVHdvU2F0KGludCBuKTogbihuKSwgYWRqKG4pLCByYWRqKG4pLCBzaWQobiksIHZpcyhuKSwgdmFsKG4sIC0xKSB7fQoKCS8vIGFkZHMgYW4gaW1wbGljYXRpb24KCXZvaWQgaW1wbChpbnQgeCwgaW50IHkpIHsgYWRqW3hdLnB1c2hfYmFjayh5KTsgcmFkalt5XS5wdXNoX2JhY2soeCk7IH0KCS8vIGFkZHMgYSBkaXNqdW5jdGlvbgoJdm9pZCB2ZWUoaW50IHgsIGludCB5KSB7IGltcGwoeF4xLCB5KTsgaW1wbCh5XjEsIHgpOyB9CgkvLyBmb3JjZXMgdmFyaWFibGVzIHRvIGJlIGVxdWFsCgl2b2lkIGVxKGludCB4LCBpbnQgeSkgeyBpbXBsKHgsIHkpOyBpbXBsKHksIHgpOyBpbXBsKHheMSwgeV4xKTsgaW1wbCh5XjEsIHheMSk7IH0KCS8vIGZvcmNlcyB2YXJpYWJsZSB0byBiZSB0cnVlCgl2b2lkIHRydShpbnQgeCkgeyBpbXBsKHheMSwgeCk7IH0KCQoJdm9pZCBkZnMxKGludCB4KSB7CgkJaWYgKHZpc1t4XSsrKSByZXR1cm47CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBhZGpbeF0uc2l6ZSgpOyBpKyspIHsKCQkJZGZzMShhZGpbeF1baV0pOwoJCX0KCQlzdGsucHVzaCh4KTsKCX0KCQoJdm9pZCBkZnMyKGludCB4KSB7CgkJaWYgKCF2aXNbeF0pIHJldHVybjsgdmlzW3hdID0gMDsKCQlzaWRbeF0gPSBzY250OyBzY2MuYmFjaygpLnB1c2hfYmFjayh4KTsKCQlmb3IgKGludCBpID0gMDsgaSA8IHJhZGpbeF0uc2l6ZSgpOyBpKyspIHsKCQkJZGZzMihyYWRqW3hdW2ldKTsKCQl9Cgl9CgoJLy8gcmV0dXJucyB0cnVlIGlmIHNhdGlzZmlhYmxlLCBmYWxzZSBvdGhlcndpc2UKCS8vIG9uIGNvbXBsZXRpb24sIHZhbFt4XSBpcyB0aGUgYXNzaWduZWQgdmFsdWUgb2YgdmFyaWFibGUgeAoJLy8gbm90ZSwgdmFsW3hdID0gMCBpbXBsaWVzIHZhbFt4XjFdID0gMQoJYm9vbCB0d29fc2F0KCkgewoJCXNjbnQgPSAwOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJCWRmczEoaSk7CgkJfQoJCXdoaWxlICghc3RrLmVtcHR5KCkpIHsKCQkJaW50IHYgPSBzdGsudG9wKCk7IHN0ay5wb3AoKTsKCQkJaWYgKHZpc1t2XSkgewoJCQkJc2NjLnB1c2hfYmFjayh2ZWN0b3I8aW50PigpKTsKCQkJCWRmczIodik7CgkJCQlzY250Kys7CgkJCX0KCQl9CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpICs9IDIpIHsKCQkJaWYgKHNpZFtpXSA9PSBzaWRbaSsxXSkgcmV0dXJuIGZhbHNlOwoJCX0KCQl2ZWN0b3I8aW50PiBtdXN0KHNjbnQpOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgc2NudDsgaSsrKSB7CgkJCWZvciAoaW50IGogPSAwOyBqIDwgc2NjW2ldLnNpemUoKTsgaisrKSB7CgkJCQl2YWxbc2NjW2ldW2pdXSA9IG11c3RbaV07CgkJCQltdXN0W3NpZFtzY2NbaV1bal1eMV1dID0gIW11c3RbaV07CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9Cn07CgppbnQgbWFpbigpIHsKCWZhc3RfY2luKCk7CglUd29TYXQgVFMoNik7CglUUy5pbXBsKDAsIDQpOwoJVFMuaW1wbCgyLCA1KTsKCWNvdXQgPDwgVFMudHdvX3NhdCgpIDw8IGVuZGw7Cglmb3IgKGludCBpID0gMDsgaSA8IDY7ICsraSkgewoJCWNvdXQgPDwgaSA8PCAnICcgPDwgVFMudmFsW2ldIDw8IGVuZGw7Cgl9Cn0=