// i wants to take ioi
//binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pi pair<int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK "Haidoanthang"
#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n
#define LOG 19
const int INF = 1e18;
const int mod = 1e9;
const int N = 1e5 + 5;
const int MOD = 998244353;
struct Point{
int x, y;
};
int n;
vector<Point> p;
int ccw(Point a, Point b, Point c){
int val = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
if(val == 0) return 0;
return (val > 0) ? 1 : -1;
}
bool onSegment(Point p, Point a, Point b){
return p.x >= min(a.x, b.x) && p.x <= max(a.x, b.x) && p.y >= min(a.y, b.y) && p.y <= max(a.y, b.y);
}
bool intersect(Point a, Point b, Point c, Point d){
int d1 = ccw(a, b, c);
int d2 = ccw(a, b, d);
int d3 = ccw(c, d, a);
int d4 = ccw(c, d, b);
if(((d1 > 0 && d2 < 0) || (d1 < 0 && d2 > 0)) &&((d3 > 0 && d4 < 0) || (d3 < 0 && d4 > 0))) return 1;
return 0;
}
bool pointOnSegmentStrict(Point p, Point a, Point b) {
if(ccw(a, b, p) != 0) return false;
return (p.x > min(a.x, b.x) && p.x < max(a.x, b.x)) || (p.y > min(a.y, b.y) && p.y < max(a.y, b.y));
}
void nhap() {
cin >> n;
p.resize(n);
for(int i = 0; i < n; i++){
cin >> p[i].x >> p[i].y;
}
}
void solve() {
bool oke = 0;
for(int i = 0; i < n; ++i){
int next_i = (i + 1) % n;
for(int j = i + 1; j < n; ++j){
int next_j = (j + 1) % n;
if (i == j || next_i == j || next_j == i) continue;
if (intersect(p[i], p[next_i], p[j], p[next_j])){
oke = 1;
break;
}
}
if(oke) break;
}
if(!oke){
for(int i = 0; i < n; ++i){
int next_i = (i + 1) % n;
for(int j = 0; j < n; ++j){
if(j == i || j == next_i) continue;
if(pointOnSegmentStrict(p[j], p[i], p[next_i])){
oke = 1;
break;
}
}
if(oke) break;
}
}
if(oke){
cout << 3 << nn;
cout << 0 << nn;
return;
}
bool has_pos = false, has_neg = false;
for(int i = 0; i < n; i++){
Point a = p[i];
Point b = p[(i + 1) % n];
Point c = p[(i + 2) % n];
int dir = ccw(a, b, c);
if (dir > 0) has_pos = true;
if (dir < 0) has_neg = true;
}
int polygon_type = 1;
if(has_pos && has_neg){
polygon_type = 2;
}
int double_area = 0;
for(int i = 0; i < n; ++i){
int j = (i + 1) % n;
double_area += (p[i].x * p[j].y - p[j].x * p[i].y);
}
double area = abs(double_area) / 2.0;
cout << polygon_type << nn;
cout << fixed << setprecision(3) << area << nn;
}
signed main() {
if (fopen(TASK".inp", "r")) {
freopen(TASK".inp", "r", stdin);
freopen(TASK".out", "w", stdout);
}
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
nhap();
solve();
return (0 ^ 0);
}
Ly8gaSB3YW50cyB0byB0YWtlIGlvaQovL2Jpbmh0aW5odHV0aW5raG9uZ2NheWN1bmh1bmdtb3RraGlraG9uZ2NvbnR1dGlubnVhbGF0dXlldHZvbmcKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgVEFTSyAiSGFpZG9hbnRoYW5nIgoKI2RlZmluZSBtcyhhLCB4KSBtZW1zZXQoYSwgeCwgc2l6ZW9mKGEpKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSBBbGwoYSwgbikgYSArIDEsIGEgKyAxICsgbgoKI2RlZmluZSBMT0cgMTkKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgbW9kID0gMWU5Owpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTM7CnN0cnVjdCBQb2ludHsKICAgIGludCB4LCB5Owp9OwppbnQgbjsKdmVjdG9yPFBvaW50PiBwOwppbnQgY2N3KFBvaW50IGEsIFBvaW50IGIsIFBvaW50IGMpewogICAgaW50IHZhbCA9IChiLnggLSBhLngpICogKGMueSAtIGEueSkgLSAoYi55IC0gYS55KSAqIChjLnggLSBhLngpOwogICAgaWYodmFsID09IDApIHJldHVybiAwOwogICAgcmV0dXJuICh2YWwgPiAwKSA/IDEgOiAtMTsKfQpib29sIG9uU2VnbWVudChQb2ludCBwLCBQb2ludCBhLCBQb2ludCBiKXsKICAgIHJldHVybiBwLnggPj0gbWluKGEueCwgYi54KSAmJiBwLnggPD0gbWF4KGEueCwgYi54KSAmJiBwLnkgPj0gbWluKGEueSwgYi55KSAmJiBwLnkgPD0gbWF4KGEueSwgYi55KTsKfQpib29sIGludGVyc2VjdChQb2ludCBhLCBQb2ludCBiLCBQb2ludCBjLCBQb2ludCBkKXsKICAgIGludCBkMSA9IGNjdyhhLCBiLCBjKTsKICAgIGludCBkMiA9IGNjdyhhLCBiLCBkKTsKICAgIGludCBkMyA9IGNjdyhjLCBkLCBhKTsKICAgIGludCBkNCA9IGNjdyhjLCBkLCBiKTsKICAgIGlmKCgoZDEgPiAwICYmIGQyIDwgMCkgfHwgKGQxIDwgMCAmJiBkMiA+IDApKSAmJigoZDMgPiAwICYmIGQ0IDwgMCkgfHwgKGQzIDwgMCAmJiBkNCA+IDApKSkgcmV0dXJuIDE7CiAgICByZXR1cm4gMDsKfQpib29sIHBvaW50T25TZWdtZW50U3RyaWN0KFBvaW50IHAsIFBvaW50IGEsIFBvaW50IGIpIHsKICAgIGlmKGNjdyhhLCBiLCBwKSAhPSAwKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gKHAueCA+IG1pbihhLngsIGIueCkgJiYgcC54IDwgbWF4KGEueCwgYi54KSkgfHwgKHAueSA+IG1pbihhLnksIGIueSkgJiYgcC55IDwgbWF4KGEueSwgYi55KSk7Cn0Kdm9pZCBuaGFwKCkgewogICAgY2luID4+IG47CiAgICBwLnJlc2l6ZShuKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGNpbiA+PiBwW2ldLnggPj4gcFtpXS55OwogICAgfQp9CnZvaWQgc29sdmUoKSB7CiAgICBib29sIG9rZSA9IDA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKXsKICAgICAgICBpbnQgbmV4dF9pID0gKGkgKyAxKSAlIG47CiAgICAgICAgZm9yKGludCBqID0gaSArIDE7IGogPCBuOyArK2opewogICAgICAgICAgICBpbnQgbmV4dF9qID0gKGogKyAxKSAlIG47CiAgICAgICAgICAgIGlmIChpID09IGogfHwgbmV4dF9pID09IGogfHwgbmV4dF9qID09IGkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAoaW50ZXJzZWN0KHBbaV0sIHBbbmV4dF9pXSwgcFtqXSwgcFtuZXh0X2pdKSl7CiAgICAgICAgICAgICAgICBva2UgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYob2tlKSBicmVhazsKICAgIH0KICAgIGlmKCFva2UpewogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpewogICAgICAgICAgICBpbnQgbmV4dF9pID0gKGkgKyAxKSAlIG47CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBuOyArK2opewogICAgICAgICAgICAgICAgaWYoaiA9PSBpIHx8IGogPT0gbmV4dF9pKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKHBvaW50T25TZWdtZW50U3RyaWN0KHBbal0sIHBbaV0sIHBbbmV4dF9pXSkpewogICAgICAgICAgICAgICAgICAgIG9rZSA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYob2tlKSBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZihva2UpewogICAgICAgIGNvdXQgPDwgMyA8PCBubjsKICAgICAgICBjb3V0IDw8IDAgPDwgbm47CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgYm9vbCBoYXNfcG9zID0gZmFsc2UsIGhhc19uZWcgPSBmYWxzZTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIFBvaW50IGEgPSBwW2ldOwogICAgICAgIFBvaW50IGIgPSBwWyhpICsgMSkgJSBuXTsKICAgICAgICBQb2ludCBjID0gcFsoaSArIDIpICUgbl07CiAgICAgICAgaW50IGRpciA9IGNjdyhhLCBiLCBjKTsKICAgICAgICBpZiAoZGlyID4gMCkgaGFzX3BvcyA9IHRydWU7CiAgICAgICAgaWYgKGRpciA8IDApIGhhc19uZWcgPSB0cnVlOwogICAgfQogICAgaW50IHBvbHlnb25fdHlwZSA9IDE7CiAgICBpZihoYXNfcG9zICYmIGhhc19uZWcpewogICAgICAgIHBvbHlnb25fdHlwZSA9IDI7CiAgICB9CiAgICBpbnQgZG91YmxlX2FyZWEgPSAwOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSl7CiAgICAgICAgaW50IGogPSAoaSArIDEpICUgbjsKICAgICAgICBkb3VibGVfYXJlYSArPSAocFtpXS54ICogcFtqXS55IC0gcFtqXS54ICogcFtpXS55KTsKICAgIH0KICAgIGRvdWJsZSBhcmVhID0gYWJzKGRvdWJsZV9hcmVhKSAvIDIuMDsKICAgIGNvdXQgPDwgcG9seWdvbl90eXBlIDw8IG5uOwogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMykgPDwgYXJlYSA8PCBubjsKfQpzaWduZWQgbWFpbigpIHsKICAgIGlmIChmb3BlbihUQVNLIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBuaGFwKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuICgwIF4gMCk7Cn0=