#include <iostream>
#include <vector>
using namespace std;
double bez(double x)
{
if (x < 0)
{
return x*-1;
}
else
{
return x;
}
}
double Pole(double x, double y, double x1, double y1)
{
double p;
p = ((x*y1) - (x1*y)) / 2;
return bez(p);
}
int main()
{
int ile, a, b, c, d;
double pole, p2, x = -1;
vector <double> wx;
vector <double> wy;
cin >> ile;
for (int i = 0; i < ile * 2; i++)
{
x += 2;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
wx.push_back(c - a);
wy.push_back(d - b);
cin >> c;
cin >> d;
wx.push_back(c - a);
wy.push_back(d - b);
pole = Pole(wx[x - 1], wy[x - 1], wx[x], wy[x]);
while ((c != a) || (d != b))
{
x++;
cin >> c;
cin >> d;
wx.push_back(c - a);
wy.push_back(d - b);
if ((wy[x] / wx[x]) > (wy[x - 1] / wx[x - 1]) && wx[x] >= 0 || (wy[x] / wx[x]) < (wy[x - 1] / wx[x - 1]) && wx[x] < 0)
{
pole += Pole(wy[x], wx[x], wy[x - 1], wx[x - 1]);;
}
else
{
pole -= Pole(wy[x], wx[x], wy[x - 1], wx[x - 1]);
}
}
pole = bez(pole);
if (i % 2 == 0)
{
p2 = pole;
}
else
{
cout << (p2 * 10) + (pole - p2) * 6 << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZG91YmxlIGJleihkb3VibGUgeCkKewoJaWYgKHggPCAwKQoJewoJCXJldHVybiB4Ki0xOwoJfQoJZWxzZQoJewoJCXJldHVybiB4OwoJfQp9Cgpkb3VibGUgUG9sZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB4MSwgZG91YmxlIHkxKQp7Cglkb3VibGUgcDsKCXAgPSAoKHgqeTEpIC0gKHgxKnkpKSAvIDI7CglyZXR1cm4gYmV6KHApOwp9CgoKaW50IG1haW4oKQp7CgoJaW50IGlsZSwgYSwgYiwgYywgZDsKCWRvdWJsZSBwb2xlLCBwMiwgeCA9IC0xOwoJdmVjdG9yIDxkb3VibGU+IHd4OwoJdmVjdG9yIDxkb3VibGU+IHd5OwoKCWNpbiA+PiBpbGU7Cglmb3IgKGludCBpID0gMDsgaSA8IGlsZSAqIDI7IGkrKykKCXsKCQl4ICs9IDI7CgkJY2luID4+IGE7CgkJY2luID4+IGI7CgkJY2luID4+IGM7CgkJY2luID4+IGQ7CgkJd3gucHVzaF9iYWNrKGMgLSBhKTsKCQl3eS5wdXNoX2JhY2soZCAtIGIpOwoJCWNpbiA+PiBjOwoJCWNpbiA+PiBkOwoJCXd4LnB1c2hfYmFjayhjIC0gYSk7CgkJd3kucHVzaF9iYWNrKGQgLSBiKTsKCQlwb2xlID0gUG9sZSh3eFt4IC0gMV0sIHd5W3ggLSAxXSwgd3hbeF0sIHd5W3hdKTsKCQl3aGlsZSAoKGMgIT0gYSkgfHwgKGQgIT0gYikpCgkJewoJCQl4Kys7CgkJCWNpbiA+PiBjOwoJCQljaW4gPj4gZDsKCgkJCXd4LnB1c2hfYmFjayhjIC0gYSk7CgkJCXd5LnB1c2hfYmFjayhkIC0gYik7CgkJCWlmICgod3lbeF0gLyB3eFt4XSkgPiAod3lbeCAtIDFdIC8gd3hbeCAtIDFdKSAmJiB3eFt4XSA+PSAwIHx8ICh3eVt4XSAvIHd4W3hdKSA8ICh3eVt4IC0gMV0gLyB3eFt4IC0gMV0pICYmIHd4W3hdIDwgMCkKCQkJewoJCQkJcG9sZSArPSBQb2xlKHd5W3hdLCB3eFt4XSwgd3lbeCAtIDFdLCB3eFt4IC0gMV0pOzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXBvbGUgLT0gUG9sZSh3eVt4XSwgd3hbeF0sIHd5W3ggLSAxXSwgd3hbeCAtIDFdKTsKCQkJfQoKCgkJfQoJCXBvbGUgPSBiZXoocG9sZSk7CgkJaWYgKGkgJSAyID09IDApCgkJewoJCQlwMiA9IHBvbGU7CgoJCX0KCQllbHNlCgkJewoKCQkJY291dCA8PCAocDIgKiAxMCkgKyAocG9sZSAtIHAyKSAqIDYgPDwgZW5kbDsKCgkJfQoKCX0KCXJldHVybiAwOwp9
MgoxIDIgMiAxIDIgMiAxIDIKMCAyIDMgMCAyIDMgMCAyCgoyIDMgNSAyIDMgMyA1IDQgMiAzCjEgNSAxIDMgNSAwIDMgMiA1IDEgNiAyIDQgMyA2IDMgNiA0IDcgNCA3IDEgNiAxIDYgMCA4IDAgOCA1IDEgNQo=
2
1 2 2 1 2 2 1 2
0 2 3 0 2 3 0 2
2 3 5 2 3 3 5 4 2 3
1 5 1 3 5 0 3 2 5 1 6 2 4 3 6 3 6 4 7 4 7 1 6 1 6 0 8 0 8 5 1 5