#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define pi 3.14159265358979323846
#define pb push_back
#define ar array
template<typename T, typename cmp = std::greater<T>>
using pq = priority_queue<T, vector<T>, cmp>;
template<typename T, typename cmp = std::less<T>>
using ordered_set = tree<T, __gnu_pbds::null_type, cmp, __gnu_pbds::rb_tree_tag, __gnu_pbds::tree_order_statistics_node_update>;
void chay()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define task "Hi"
freopen(task".INP", "r", stdin);
freopen(task".OUT", "w", stdout);
}
const int N = 1e6, INF = 2e9+7;
const int block = 600;
const long long INFLL = 2e18+7;
long long M = 1e9+7;
struct Point {
ll x, y;
Point(int _x, int _y)
{
x = _x;
y = _y;
}
};
ll gcdll(ll a, ll b) {
return b == 0 ? abs(a) : gcdll(b, a % b);
}
void solve()
{
int n;
cin>>n;
vector<Point> p;
p.pb(Point(0, 0));
for (int i = 1; i <= n; i++)
{
int huong, d;
cin>>huong>>d;
Point toado = *p.rbegin();
if (huong == 1)
{
toado.y += d;
}
if (huong == 2)
{
toado.x += d;
}
if (huong == 3)
{
toado.y -= d;
toado.x += d;
}
if (huong == 4)
{
toado.y -= d;
}
if (huong == 5)
{
toado.x -= d;
}
if (huong == 6)
{
toado.y += d;
toado.x -= d;
}
p.push_back(toado);
}
ll area2 = 0; // diện tích * 2
ll B = 0; // số điểm biên
for (int i = 0; i < n; i++) {
int j = (i + 1) % n;
area2 += (p[i].x * p[j].y - p[j].x * p[i].y);
B += gcdll(abs(p[j].x - p[i].x), abs(p[j].y - p[i].y));
}
ll A = abs(area2); // diện tích * 2
ll I2 = A - B + 2; // = 2I
ll I = I2 / 2;
cout<<(I + B)%M;
}
signed main ()
{
//chay();
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
//cin>>t;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NiAKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBhciBhcnJheQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgY21wID0gc3RkOjpncmVhdGVyPFQ+Pgp1c2luZyBwcSA9IHByaW9yaXR5X3F1ZXVlPFQsIHZlY3RvcjxUPiwgY21wPjsKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIGNtcCA9IHN0ZDo6bGVzczxUPj4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPFQsIF9fZ251X3BiZHM6Om51bGxfdHlwZSwgY21wLCBfX2dudV9wYmRzOjpyYl90cmVlX3RhZywgX19nbnVfcGJkczo6dHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKCnZvaWQgY2hheSgpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICAjZGVmaW5lIHRhc2sgIkhpIgogICAgZnJlb3Blbih0YXNrIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4odGFzayIuT1VUIiwgInciLCBzdGRvdXQpOwp9Cgpjb25zdCBpbnQgTiA9IDFlNiwgSU5GID0gMmU5Kzc7CmNvbnN0IGludCBibG9jayA9IDYwMDsKY29uc3QgbG9uZyBsb25nIElORkxMID0gMmUxOCs3Owpsb25nIGxvbmcgTSA9IDFlOSs3OwoKc3RydWN0IFBvaW50IHsKICAgIGxsIHgsIHk7CiAgICBQb2ludChpbnQgX3gsIGludCBfeSkKICAgIHsKICAgICAgICB4ID0gX3g7CiAgICAgICAgeSA9IF95OwogICAgfQp9OwoKbGwgZ2NkbGwobGwgYSwgbGwgYikgewogICAgcmV0dXJuIGIgPT0gMCA/IGFicyhhKSA6IGdjZGxsKGIsIGEgJSBiKTsKfQoKdm9pZCBzb2x2ZSgpCnsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgdmVjdG9yPFBvaW50PiBwOwogICAgcC5wYihQb2ludCgwLCAwKSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IGh1b25nLCBkOwogICAgICAgIGNpbj4+aHVvbmc+PmQ7ICAgICAgCiAgICAgICAgUG9pbnQgdG9hZG8gPSAqcC5yYmVnaW4oKTsKICAgICAgICBpZiAoaHVvbmcgPT0gMSkgCiAgICAgICAgewogICAgICAgICAgICB0b2Fkby55ICs9IGQ7CiAgICAgICAgfQogICAgICAgIGlmIChodW9uZyA9PSAyKQogICAgICAgIHsKICAgICAgICAgICAgdG9hZG8ueCArPSBkOwogICAgICAgIH0KICAgICAgICBpZiAoaHVvbmcgPT0gMykKICAgICAgICB7CiAgICAgICAgICAgIHRvYWRvLnkgLT0gZDsKICAgICAgICAgICAgdG9hZG8ueCArPSBkOwogICAgICAgIH0KICAgICAgICBpZiAoaHVvbmcgPT0gNCkKICAgICAgICB7CiAgICAgICAgICAgIHRvYWRvLnkgLT0gZDsKICAgICAgICB9CiAgICAgICAgaWYgKGh1b25nID09IDUpCiAgICAgICAgewogICAgICAgICAgICB0b2Fkby54IC09IGQ7CiAgICAgICAgfQogICAgICAgIGlmIChodW9uZyA9PSA2KQogICAgICAgIHsKICAgICAgICAgICAgdG9hZG8ueSArPSBkOwogICAgICAgICAgICB0b2Fkby54IC09IGQ7CiAgICAgICAgfQogICAgICAgIHAucHVzaF9iYWNrKHRvYWRvKTsKICAgIH0KCiAgICBsbCBhcmVhMiA9IDA7IC8vIGRp4buHbiB0w61jaCAqIDIKICAgIGxsIEIgPSAwOyAgICAgLy8gc+G7kSDEkWnhu4NtIGJpw6puCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGludCBqID0gKGkgKyAxKSAlIG47CiAgICAgICAgYXJlYTIgKz0gKHBbaV0ueCAqIHBbal0ueSAtIHBbal0ueCAqIHBbaV0ueSk7CiAgICAgICAgQiArPSBnY2RsbChhYnMocFtqXS54IC0gcFtpXS54KSwgYWJzKHBbal0ueSAtIHBbaV0ueSkpOwogICAgfQoKICAgIGxsIEEgPSBhYnMoYXJlYTIpOyAvLyBkaeG7h24gdMOtY2ggKiAyCiAgICBsbCBJMiA9IEEgLSBCICsgMjsgLy8gPSAySQogICAgbGwgSSA9IEkyIC8gMjsKICAgIGNvdXQ8PChJICsgQiklTTsKfQogCnNpZ25lZCBtYWluICgpCnsKICAgIC8vY2hheSgpOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsgICAKICAgIC8vY2luPj50OyAKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=