#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const long long oo=1e18;
const int mod=1e9+7;
const int base=31;
int Test=1;
bool bit(int mask,int i){return (mask>>i)&1;}
void home()
{
if(fopen("main.inp","r"))
freopen("main.inp","r",stdin),
freopen("main.out","w",stdout);
}
int n;
bool c[100005];int ans;
vector<int>a[100005];
vector<int>noi[100005];
void DFS(int u,int par)
{
for(int v:a[u])
{
if(v!=par)
DFS(v,u);
}
if(!c[u])
{
if(par!=0)
{
ans++;
c[u]=true;
c[par]=true;
}
else
{
ans++;
c[u]=true;
}
}
}
int x=1;
bool cmp(int u,int v)
{
return (u-x+n)%n<(v-x+n)%n;
}
int dem=0;
map<vector<int>,int>mp;
void Tcmduc_VOI26()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int ic=i+1;if(ic>n)ic=1;
noi[i].push_back(ic);
int it=i-1;if(it<1)it=n;
noi[i].push_back(it);
}
for(int i=1;i<=n-3;i++)
{
int u,v;cin>>u>>v;
noi[u].push_back(v);
noi[v].push_back(u);
}
for(;x<=n;x++)sort(noi[x].begin(),noi[x].end(),cmp);
for(int i=1;i<=n;i++)
{
for(int j=2;j<noi[i].size();j++)
{
vector<int>vec1(3),vec2(3);
vec1={i,noi[i][j],noi[i][j-1]};
vec2={i,noi[i][j-1],noi[i][j-2]};
sort(vec1.begin(),vec1.end());
sort(vec2.begin(),vec2.end());
if(!mp.count(vec1))mp[vec1]=++dem;
if(!mp.count(vec2))mp[vec2]=++dem;
a[mp[vec1]].push_back(mp[vec2]);
a[mp[vec2]].push_back(mp[vec1]);
}
}
for(int i=1;i<=dem;i++)
{
sort(a[i].begin(),a[i].end());
a[i].erase(unique(a[i].begin(),a[i].end()),a[i].end());
}
DFS(1,0);
cout<<ans<<' ';
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);home();
while(Test--)Tcmduc_VOI26();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIG9vPTFlMTg7CmNvbnN0IGludCBtb2Q9MWU5Kzc7CmNvbnN0IGludCBiYXNlPTMxOwppbnQgVGVzdD0xOwpib29sIGJpdChpbnQgbWFzayxpbnQgaSl7cmV0dXJuIChtYXNrPj5pKSYxO30Kdm9pZCBob21lKCkKewogICAgaWYoZm9wZW4oIm1haW4uaW5wIiwiciIpKSAKICAgIGZyZW9wZW4oIm1haW4uaW5wIiwiciIsc3RkaW4pLAogICAgZnJlb3BlbigibWFpbi5vdXQiLCJ3IixzdGRvdXQpOwp9CmludCBuOwpib29sIGNbMTAwMDA1XTtpbnQgYW5zOwp2ZWN0b3I8aW50PmFbMTAwMDA1XTsKdmVjdG9yPGludD5ub2lbMTAwMDA1XTsKdm9pZCBERlMoaW50IHUsaW50IHBhcikKewogICAgZm9yKGludCB2OmFbdV0pCiAgICB7CiAgICAgICAgaWYodiE9cGFyKQogICAgICAgICAgICBERlModix1KTsKICAgIH0KICAgIGlmKCFjW3VdKSAKICAgIHsKICAgICAgICBpZihwYXIhPTApIAogICAgICAgIHsKICAgICAgICAgICAgYW5zKys7CiAgICAgICAgICAgIGNbdV09dHJ1ZTsKICAgICAgICAgICAgY1twYXJdPXRydWU7CiAgICAgICAgfSAKICAgICAgICBlbHNlIAogICAgICAgIHsKICAgICAgICAgICAgYW5zKys7CiAgICAgICAgICAgIGNbdV09dHJ1ZTsKICAgICAgICB9CiAgICB9Cn0KaW50IHg9MTsKYm9vbCBjbXAoaW50IHUsaW50IHYpCnsKICAgIHJldHVybiAodS14K24pJW48KHYteCtuKSVuOwp9CmludCBkZW09MDsKbWFwPHZlY3RvcjxpbnQ+LGludD5tcDsKdm9pZCBUY21kdWNfVk9JMjYoKQp7CiAgICBjaW4+Pm47CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBpbnQgaWM9aSsxO2lmKGljPm4paWM9MTsKICAgICAgICBub2lbaV0ucHVzaF9iYWNrKGljKTsKICAgICAgICBpbnQgaXQ9aS0xO2lmKGl0PDEpaXQ9bjsKICAgICAgICBub2lbaV0ucHVzaF9iYWNrKGl0KTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW4tMztpKyspCiAgICB7CiAgICAgICAgaW50IHUsdjtjaW4+PnU+PnY7CiAgICAgICAgbm9pW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBub2lbdl0ucHVzaF9iYWNrKHUpOwogICAgfQogICAgZm9yKDt4PD1uO3grKylzb3J0KG5vaVt4XS5iZWdpbigpLG5vaVt4XS5lbmQoKSxjbXApOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTI7ajxub2lbaV0uc2l6ZSgpO2orKykKICAgICAgICB7CiAgICAgICAgICAgIHZlY3RvcjxpbnQ+dmVjMSgzKSx2ZWMyKDMpOwogICAgICAgICAgICB2ZWMxPXtpLG5vaVtpXVtqXSxub2lbaV1bai0xXX07CiAgICAgICAgICAgIHZlYzI9e2ksbm9pW2ldW2otMV0sbm9pW2ldW2otMl19OwogICAgICAgICAgICBzb3J0KHZlYzEuYmVnaW4oKSx2ZWMxLmVuZCgpKTsKICAgICAgICAgICAgc29ydCh2ZWMyLmJlZ2luKCksdmVjMi5lbmQoKSk7CiAgICAgICAgICAgIGlmKCFtcC5jb3VudCh2ZWMxKSltcFt2ZWMxXT0rK2RlbTsKICAgICAgICAgICAgaWYoIW1wLmNvdW50KHZlYzIpKW1wW3ZlYzJdPSsrZGVtOwogICAgICAgICAgICBhW21wW3ZlYzFdXS5wdXNoX2JhY2sobXBbdmVjMl0pOwogICAgICAgICAgICBhW21wW3ZlYzJdXS5wdXNoX2JhY2sobXBbdmVjMV0pOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PWRlbTtpKyspCiAgICB7CiAgICAgICAgc29ydChhW2ldLmJlZ2luKCksYVtpXS5lbmQoKSk7CiAgICAgICAgYVtpXS5lcmFzZSh1bmlxdWUoYVtpXS5iZWdpbigpLGFbaV0uZW5kKCkpLGFbaV0uZW5kKCkpOwogICAgfQogICAgREZTKDEsMCk7CiAgICBjb3V0PDxhbnM8PCcgJzsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTtob21lKCk7CiAgICB3aGlsZShUZXN0LS0pVGNtZHVjX1ZPSTI2KCk7CiAgICByZXR1cm4gMDsKfQo=