/*author - Aryan Mittal*/
#include<bits/stdc++.h>
using namespace std;
#pragma GCC push_options
#pragma GCC optimize ("unroll-loops")
#define print(a) for (auto x : a) cout << x << " "; cout << endl
#define print_upto(a,n) for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl
#define take(x,n) for(int i=0;i<n;i++) cin>>x[i];
#define watch(x) cout << (#x) << " is " << (x) << "\n"
#define watch2(x,y) cout <<(#x)<<" is "<<(x)<<" and "<<(#y)<<" is "<<(y)<<"\n"
#define ll long long
#define pie_value 3.14159265358979323846
#define mod (ll)1000000007
ll power(ll a, ll b) {
if (b == 0)
return 1;
ll val = power(a, b / 2) % mod;
if (b % 2 == 0) {
return (val * val) % mod;
} else {
return (a % mod * (val * val) % mod) % mod;
}
}
int main() {
// Use ctrl+shift+b ( second option )
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
freopen("error.txt" , "w" , stderr);
#endif
ll n;
cin >> n;
ll mp_oe = 0, mp_ee = 0, mp_oo = 0;
ll no = n;
while (n--) {
ll l, r;
cin >> l >> r;
if (l % 2 == 0 && r % 2 == 0) {
mp_ee++;
} else if (l % 2 != 0 && r % 2 != 0) {
mp_oo++;
} else {
mp_oe++;
}
}
n = no;
if (mp_oe == 0 && mp_oo % 2 == 0) {
cout << 0 << "\n";
} else if (mp_oe == 0 && mp_oo % 2 != 0) {
cout << power(2, n) % mod << "\n";
} else {
//watch(n);
cout << power(2, n - 1) % mod << "\n";
}
return 0;
}
LyphdXRob3IgLSBBcnlhbiBNaXR0YWwqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI3ByYWdtYSBHQ0MgcHVzaF9vcHRpb25zCiNwcmFnbWEgR0NDIG9wdGltaXplICgidW5yb2xsLWxvb3BzIikKCgojZGVmaW5lIHByaW50KGEpICAgICAgICBmb3IgKGF1dG8geCA6IGEpIGNvdXQgPDwgeCA8PCAiICI7IGNvdXQgPDwgZW5kbAojZGVmaW5lIHByaW50X3VwdG8oYSxuKSAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykgICAgY291dDw8YVtpXTw8IiAiOyBjb3V0PDxlbmRsCiNkZWZpbmUgdGFrZSh4LG4pICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKSAgY2luPj54W2ldOwoKI2RlZmluZSB3YXRjaCh4KSBjb3V0IDw8ICgjeCkgPDwgIiBpcyAiIDw8ICh4KSA8PCAiXG4iCiNkZWZpbmUgd2F0Y2gyKHgseSkgY291dCA8PCgjeCk8PCIgaXMgIjw8KHgpPDwiIGFuZCAiPDwoI3kpPDwiIGlzICI8PCh5KTw8IlxuIgoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwaWVfdmFsdWUgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NgojZGVmaW5lIG1vZCAobGwpMTAwMDAwMDAwNwoKbGwgcG93ZXIobGwgYSwgbGwgYikgewoJaWYgKGIgPT0gMCkKCQlyZXR1cm4gMTsKCglsbCB2YWwgPSBwb3dlcihhLCBiIC8gMikgJSBtb2Q7CglpZiAoYiAlIDIgPT0gMCkgewoJCXJldHVybiAodmFsICogdmFsKSAlIG1vZDsKCX0gZWxzZSB7CgkJcmV0dXJuIChhICUgbW9kICogKHZhbCAqIHZhbCkgJSBtb2QpICUgbW9kOwoJfQp9CgppbnQgbWFpbigpIHsKCgkvLyBVc2UgY3RybCtzaGlmdCtiICggc2Vjb25kIG9wdGlvbiApCglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoMCk7Cgljb3V0LnRpZSgwKTsKCiNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKCWZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CglmcmVvcGVuKCJlcnJvci50eHQiICwgInciICwgc3RkZXJyKTsKI2VuZGlmCgoJbGwgbjsKCWNpbiA+PiBuOwoKCWxsIG1wX29lID0gMCwgbXBfZWUgPSAwLCBtcF9vbyA9IDA7CglsbCBubyA9IG47CgoJd2hpbGUgKG4tLSkgewoJCWxsIGwsIHI7CgkJY2luID4+IGwgPj4gcjsKCgkJaWYgKGwgJSAyID09IDAgJiYgciAlIDIgPT0gMCkgewoJCQltcF9lZSsrOwoJCX0gZWxzZSBpZiAobCAlIDIgIT0gMCAmJiByICUgMiAhPSAwKSB7CgkJCW1wX29vKys7CgkJfSBlbHNlIHsKCQkJbXBfb2UrKzsKCQl9Cgl9CgoJbiA9IG5vOwoKCglpZiAobXBfb2UgPT0gMCAmJiBtcF9vbyAlIDIgPT0gMCkgewoJCWNvdXQgPDwgMCA8PCAiXG4iOwoJfSBlbHNlIGlmIChtcF9vZSA9PSAwICYmIG1wX29vICUgMiAhPSAwKSB7CgkJY291dCA8PCBwb3dlcigyLCBuKSAlIG1vZCA8PCAiXG4iOwoJfSBlbHNlIHsKCQkvL3dhdGNoKG4pOwoJCWNvdXQgPDwgcG93ZXIoMiwgbiAtIDEpICUgbW9kIDw8ICJcbiI7Cgl9CgoKCglyZXR1cm4gMDsKfQo=