// 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 "TUGIAC"
#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;
int bit[200000];
struct Point{
int x, y;
};
Point p[5];
void nhap(){
for(int i = 1; i <= 4; i++)
cin >> p[i].x >> p[i].y;
}
int cross(Point a, Point b, Point c){
return (b.x - a.x) * (c.y - a.y)
- (b.y - a.y) * (c.x - a.x);
}
int sign(int x){
if(x > 0) return 1;
if(x < 0) return -1;
return 0;
}
bool trenDoan(Point a, Point b, Point c){
return min(a.x, b.x) <= c.x && c.x <= max(a.x, b.x)
&& min(a.y, b.y) <= c.y && c.y <= max(a.y, b.y)
&& cross(a, b, c) == 0;
}
bool giaoNhau(Point a, Point b, Point c, Point d){
int u = cross(a, b, c);
int v = cross(a, b, d);
int w = cross(c, d, a);
int z = cross(c, d, b);
if(sign(u) * sign(v) < 0 && sign(w) * sign(z) < 0)
return true;
if(u == 0 && trenDoan(a, b, c)) return true;
if(v == 0 && trenDoan(a, b, d)) return true;
if(w == 0 && trenDoan(c, d, a)) return true;
if(z == 0 && trenDoan(c, d, b)) return true;
return false;
}
long double dienTich(Point a, Point b, Point c){
return fabsl(((long double)b.x - a.x) * ((long double)c.y - a.y) - ((long double)b.y - a.y) * ((long double)c.x - a.x)) / 2.0L;
}
void solve(){
for(int i = 1; i <= 4; i++){
for(int j = i + 1; j <= 4; j++){
if(p[i].x == p[j].x && p[i].y == p[j].y){
cout << 0 << nn;
return;
}
}
}
bool g1 = giaoNhau(p[1], p[2], p[3], p[4]);
bool g2 = giaoNhau(p[2], p[3], p[4], p[1]);
if(g1 || g2){
Point a = p[1], b = p[2], c = p[3], d = p[4];
long double dt = 0;
if(g1){
int vx = b.x - a.x;
int vy = b.y - a.y;
int ux = d.x - c.x;
int uy = d.y - c.y;
long double mau = (long double)vx * uy - (long double)vy * ux;
if(mau == 0){
cout << 0 << nn;
return;
}
long double t = ((long double)(c.x - a.x) * uy - (long double)(c.y - a.y) * ux) / mau;
long double qx = a.x + t * vx;
long double qy = a.y + t * vy;
dt = fabsl((long double)(a.x - qx) * (d.y - qy) - (long double)(a.y - qy) * (d.x - qx)) / 2.0L + fabsl((long double)(b.x - qx) * (c.y - qy) - (long double)(b.y - qy) * (c.x - qx)) / 2.0L;
}
else{
a = p[2];
b = p[3];
c = p[4];
d = p[1];
int vx = b.x - a.x;
int vy = b.y - a.y;
int ux = d.x - c.x;
int uy = d.y - c.y;
long double mau = (long double)vx * uy - (long double)vy * ux;
if(mau == 0){
cout << 0 << nn;
return;
}
long double t = ((long double)(c.x - a.x) * uy - (long double)(c.y - a.y) * ux) / mau;
long double qx = a.x + t * vx;
long double qy = a.y + t * vy;
dt = fabsl((long double)(p[1].x - qx) * (p[2].y - qy) - (long double)(p[1].y - qy) * (p[2].x - qx)) / 2.0L
+ fabsl((long double)(p[3].x - qx) * (p[4].y - qy)
- (long double)(p[3].y - qy) * (p[4].x - qx)) / 2.0L;
}
if(dt == 0){
cout << 0 << nn;
return;
}
cout << 3 << nn;
cout << fixed << setprecision(3) << dt << nn;
return;
}
int c1 = cross(p[1], p[2], p[3]);
int c2 = cross(p[2], p[3], p[4]);
int c3 = cross(p[3], p[4], p[1]);
int c4 = cross(p[4], p[1], p[2]);
if(c1 == 0 || c2 == 0 || c3 == 0 || c4 == 0){
cout << 0 << nn;
return;
}
int loai = 1;
if(!(sign(c1) == sign(c2) && sign(c2) == sign(c3) && sign(c3) == sign(c4))) loai = 2;
long double dt = fabsl((long double)p[1].x * p[2].y - (long double)p[1].y * p[2].x + (long double)p[2].x * p[3].y - (long double)p[2].y *p[3].x + (long double)p[3].x * p[4].y - (long double)p[3].y * p[4].x + (long double)p[4].x * p[1].y - (long double)p[4].y * p[1].x) / 2.0L;
if(dt == 0){
cout << 0 << nn;
return;
}
cout << loai << nn;
cout << fixed << setprecision(3) << dt << 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+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgVEFTSyAiVFVHSUFDIgoKI2RlZmluZSBtcyhhLCB4KSBtZW1zZXQoYSwgeCwgc2l6ZW9mKGEpKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSBBbGwoYSwgbikgYSArIDEsIGEgKyAxICsgbgoKI2RlZmluZSBMT0cgMTkKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgbW9kID0gMWU5Owpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTM7CgppbnQgYml0WzIwMDAwMF07CgpzdHJ1Y3QgUG9pbnR7CiAgICBpbnQgeCwgeTsKfTsKClBvaW50IHBbNV07Cgp2b2lkIG5oYXAoKXsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gNDsgaSsrKQogICAgICAgIGNpbiA+PiBwW2ldLnggPj4gcFtpXS55Owp9CgppbnQgY3Jvc3MoUG9pbnQgYSwgUG9pbnQgYiwgUG9pbnQgYyl7CiAgICByZXR1cm4gKGIueCAtIGEueCkgKiAoYy55IC0gYS55KQogICAgICAgICAtIChiLnkgLSBhLnkpICogKGMueCAtIGEueCk7Cn0KCmludCBzaWduKGludCB4KXsKICAgIGlmKHggPiAwKSByZXR1cm4gMTsKICAgIGlmKHggPCAwKSByZXR1cm4gLTE7CiAgICByZXR1cm4gMDsKfQoKYm9vbCB0cmVuRG9hbihQb2ludCBhLCBQb2ludCBiLCBQb2ludCBjKXsKICAgIHJldHVybiBtaW4oYS54LCBiLngpIDw9IGMueCAmJiBjLnggPD0gbWF4KGEueCwgYi54KQogICAgICAgICYmIG1pbihhLnksIGIueSkgPD0gYy55ICYmIGMueSA8PSBtYXgoYS55LCBiLnkpCiAgICAgICAgJiYgY3Jvc3MoYSwgYiwgYykgPT0gMDsKfQpib29sIGdpYW9OaGF1KFBvaW50IGEsIFBvaW50IGIsIFBvaW50IGMsIFBvaW50IGQpewogICAgaW50IHUgPSBjcm9zcyhhLCBiLCBjKTsKICAgIGludCB2ID0gY3Jvc3MoYSwgYiwgZCk7CiAgICBpbnQgdyA9IGNyb3NzKGMsIGQsIGEpOwogICAgaW50IHogPSBjcm9zcyhjLCBkLCBiKTsKICAgIGlmKHNpZ24odSkgKiBzaWduKHYpIDwgMCAmJiBzaWduKHcpICogc2lnbih6KSA8IDApCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBpZih1ID09IDAgJiYgdHJlbkRvYW4oYSwgYiwgYykpIHJldHVybiB0cnVlOwogICAgaWYodiA9PSAwICYmIHRyZW5Eb2FuKGEsIGIsIGQpKSByZXR1cm4gdHJ1ZTsKICAgIGlmKHcgPT0gMCAmJiB0cmVuRG9hbihjLCBkLCBhKSkgcmV0dXJuIHRydWU7CiAgICBpZih6ID09IDAgJiYgdHJlbkRvYW4oYywgZCwgYikpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwp9Cgpsb25nIGRvdWJsZSBkaWVuVGljaChQb2ludCBhLCBQb2ludCBiLCBQb2ludCBjKXsKICAgIHJldHVybiBmYWJzbCgoKGxvbmcgZG91YmxlKWIueCAtIGEueCkgKiAoKGxvbmcgZG91YmxlKWMueSAtIGEueSkgLSAoKGxvbmcgZG91YmxlKWIueSAtIGEueSkgKiAoKGxvbmcgZG91YmxlKWMueCAtIGEueCkpIC8gMi4wTDsKfQoKdm9pZCBzb2x2ZSgpewogICAgZm9yKGludCBpID0gMTsgaSA8PSA0OyBpKyspewogICAgICAgIGZvcihpbnQgaiA9IGkgKyAxOyBqIDw9IDQ7IGorKyl7CiAgICAgICAgICAgIGlmKHBbaV0ueCA9PSBwW2pdLnggJiYgcFtpXS55ID09IHBbal0ueSl7CiAgICAgICAgICAgICAgICBjb3V0IDw8IDAgPDwgbm47CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBib29sIGcxID0gZ2lhb05oYXUocFsxXSwgcFsyXSwgcFszXSwgcFs0XSk7CiAgICBib29sIGcyID0gZ2lhb05oYXUocFsyXSwgcFszXSwgcFs0XSwgcFsxXSk7CiAgICBpZihnMSB8fCBnMil7CiAgICAgICAgUG9pbnQgYSA9IHBbMV0sIGIgPSBwWzJdLCBjID0gcFszXSwgZCA9IHBbNF07CiAgICAgICAgbG9uZyBkb3VibGUgZHQgPSAwOwogICAgICAgIGlmKGcxKXsKICAgICAgICAgICAgaW50IHZ4ID0gYi54IC0gYS54OwogICAgICAgICAgICBpbnQgdnkgPSBiLnkgLSBhLnk7CiAgICAgICAgICAgIGludCB1eCA9IGQueCAtIGMueDsKICAgICAgICAgICAgaW50IHV5ID0gZC55IC0gYy55OwogICAgICAgICAgICBsb25nIGRvdWJsZSBtYXUgPSAobG9uZyBkb3VibGUpdnggKiB1eSAtIChsb25nIGRvdWJsZSl2eSAqIHV4OwogICAgICAgICAgICBpZihtYXUgPT0gMCl7CiAgICAgICAgICAgICAgICBjb3V0IDw8IDAgPDwgbm47CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbG9uZyBkb3VibGUgdCA9ICgobG9uZyBkb3VibGUpKGMueCAtIGEueCkgKiB1eSAtIChsb25nIGRvdWJsZSkoYy55IC0gYS55KSAqIHV4KSAvIG1hdTsKCiAgICAgICAgICAgIGxvbmcgZG91YmxlIHF4ID0gYS54ICsgdCAqIHZ4OwogICAgICAgICAgICBsb25nIGRvdWJsZSBxeSA9IGEueSArIHQgKiB2eTsKCiAgICAgICAgICAgIGR0ID0gZmFic2woKGxvbmcgZG91YmxlKShhLnggLSBxeCkgKiAoZC55IC0gcXkpIC0gKGxvbmcgZG91YmxlKShhLnkgLSBxeSkgKiAoZC54IC0gcXgpKSAvIDIuMEwgKyBmYWJzbCgobG9uZyBkb3VibGUpKGIueCAtIHF4KSAqIChjLnkgLSBxeSkgLSAobG9uZyBkb3VibGUpKGIueSAtIHF5KSAqIChjLnggLSBxeCkpIC8gMi4wTDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgYSA9IHBbMl07CiAgICAgICAgICAgIGIgPSBwWzNdOwogICAgICAgICAgICBjID0gcFs0XTsKICAgICAgICAgICAgZCA9IHBbMV07CiAgICAgICAgICAgIGludCB2eCA9IGIueCAtIGEueDsKICAgICAgICAgICAgaW50IHZ5ID0gYi55IC0gYS55OwogICAgICAgICAgICBpbnQgdXggPSBkLnggLSBjLng7CiAgICAgICAgICAgIGludCB1eSA9IGQueSAtIGMueTsKICAgICAgICAgICAgbG9uZyBkb3VibGUgbWF1ID0gKGxvbmcgZG91YmxlKXZ4ICogdXkgLSAobG9uZyBkb3VibGUpdnkgKiB1eDsKICAgICAgICAgICAgaWYobWF1ID09IDApewogICAgICAgICAgICAgICAgY291dCA8PCAwIDw8IG5uOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsb25nIGRvdWJsZSB0ID0gKChsb25nIGRvdWJsZSkoYy54IC0gYS54KSAqIHV5IC0gKGxvbmcgZG91YmxlKShjLnkgLSBhLnkpICogdXgpIC8gbWF1OwogICAgICAgICAgICBsb25nIGRvdWJsZSBxeCA9IGEueCArIHQgKiB2eDsKICAgICAgICAgICAgbG9uZyBkb3VibGUgcXkgPSBhLnkgKyB0ICogdnk7CiAgICAgICAgICAgIGR0ID0gZmFic2woKGxvbmcgZG91YmxlKShwWzFdLnggLSBxeCkgKiAocFsyXS55IC0gcXkpIC0gKGxvbmcgZG91YmxlKShwWzFdLnkgLSBxeSkgKiAocFsyXS54IC0gcXgpKSAvIDIuMEwKICAgKyBmYWJzbCgobG9uZyBkb3VibGUpKHBbM10ueCAtIHF4KSAqIChwWzRdLnkgLSBxeSkKICAgICAgICAgLSAobG9uZyBkb3VibGUpKHBbM10ueSAtIHF5KSAqIChwWzRdLnggLSBxeCkpIC8gMi4wTDsKICAgICAgICB9CiAgICAgICAgaWYoZHQgPT0gMCl7CiAgICAgICAgICAgIGNvdXQgPDwgMCA8PCBubjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IDMgPDwgbm47CiAgICAgICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMykgPDwgZHQgPDwgbm47CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBjMSA9IGNyb3NzKHBbMV0sIHBbMl0sIHBbM10pOwogICAgaW50IGMyID0gY3Jvc3MocFsyXSwgcFszXSwgcFs0XSk7CiAgICBpbnQgYzMgPSBjcm9zcyhwWzNdLCBwWzRdLCBwWzFdKTsKICAgIGludCBjNCA9IGNyb3NzKHBbNF0sIHBbMV0sIHBbMl0pOwogICAgaWYoYzEgPT0gMCB8fCBjMiA9PSAwIHx8IGMzID09IDAgfHwgYzQgPT0gMCl7CiAgICAgICAgY291dCA8PCAwIDw8IG5uOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBsb2FpID0gMTsKICAgIGlmKCEoc2lnbihjMSkgPT0gc2lnbihjMikgJiYgc2lnbihjMikgPT0gc2lnbihjMykgJiYgc2lnbihjMykgPT0gc2lnbihjNCkpKSBsb2FpID0gMjsKCiAgICBsb25nIGRvdWJsZSBkdCA9IGZhYnNsKChsb25nIGRvdWJsZSlwWzFdLnggKiBwWzJdLnkgLSAobG9uZyBkb3VibGUpcFsxXS55ICogcFsyXS54ICsgKGxvbmcgZG91YmxlKXBbMl0ueCAqIHBbM10ueSAtIChsb25nIGRvdWJsZSlwWzJdLnkgKnBbM10ueCArIChsb25nIGRvdWJsZSlwWzNdLnggKiBwWzRdLnkgLSAobG9uZyBkb3VibGUpcFszXS55ICogcFs0XS54ICsgKGxvbmcgZG91YmxlKXBbNF0ueCAqIHBbMV0ueSAtIChsb25nIGRvdWJsZSlwWzRdLnkgKiBwWzFdLngpIC8gMi4wTDsKICAgIGlmKGR0ID09IDApewogICAgICAgIGNvdXQgPDwgMCA8PCBubjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBjb3V0IDw8IGxvYWkgPDwgbm47CiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbigzKSA8PCBkdCA8PCBubjsKfQpzaWduZWQgbWFpbigpewogICAgaWYoZm9wZW4oVEFTSyIuSU5QIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgbmhhcCgpOwogICAgc29sdmUoKTsKICAgIHJldHVybiAoMCBeIDApOwp9