#include <bits/stdc++.h>
using namespace std;
#define double long double
const double eps = 1e-10;
const double inf = 1e18;
struct point {
double Ox, Oy;
point() {}
point(double x, double y) : Ox(x), Oy(y) {}
friend istream& operator >> (istream& in, point& o) {
in >> o.Ox >> o.Oy;
return in;
}
friend ostream& operator << (ostream& out, const point& o) {
out << o.Ox << ' ' << o.Oy;
return out;
}
friend point operator + (const point& A, const point& B) {return point(A.Ox + B.Ox, A.Oy + B.Oy);}
friend point operator - (const point& A, const point& B) {return point(A.Ox - B.Ox, A.Oy - B.Oy);}
friend point operator * (const point& A, const double& x) {return point(A.Ox * x, A.Oy * x);}
friend point operator / (const point& A, const double& x) {return point(A.Ox / x, A.Oy / x);}
double cross(const point& B) const {return Ox * B.Oy - Oy * B.Ox;}
double cross(const point& B, const point& C) const {return (B - *this).cross(C - *this);}
double dot(const point& B) {return Ox * B.Ox + Oy * B.Oy;}
double angle() const {return atan2l(Oy, Ox);}
point perp() const {return point(Oy, -Ox);} // rotate 90 ccw
double length() const {return sqrtl(Ox * Ox + Oy * Oy);}
double dist(const point& A) const {return (A - *this).length();}
};
bool acute(const point& A, const point& B, const point& C) { // checks angle ABC
return (A - B).dot(C - B) > -eps;
}
double angle(const point& A, const point& B, const point& C) {
return acosl(min(1.0L, (A - B).dot(C - B) / ((A - B).length() * (C - B).length())));
}
struct line {
double a, b, c; // ax + by + c = 0
line() {}
line(const point& A, const point& B) {
a = A.Oy - B.Oy; b = B.Ox - A.Ox;
c = -(a * A.Ox + b * A.Oy);
}
friend istream& operator >> (istream& in, line& d) {
in >> d.a >> d.b >> d.c;
return in;
}
friend ostream& operator << (ostream& out, const line& d) {
out << d.a << ' ' << d.b << ' ' << d.c;
return out;
}
double dist(const point& A) const {return abs(a * A.Ox + b * A.Oy + c) / sqrtl(a * a + b * b);}
point eval(double x) const {return point(x, (-c - a * x) / b);}
point intersect(const line& d) const {
if (abs(a * d.b - b * d.a) < eps) return point(inf, inf);
return point(b * d.c - d.b * c, -a * d.c + d.a * c) / (a * d.b - d.a * b);
}
};
signed main() {
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAojZGVmaW5lIGRvdWJsZSBsb25nIGRvdWJsZQoKY29uc3QgZG91YmxlIGVwcyA9IDFlLTEwOwpjb25zdCBkb3VibGUgaW5mID0gMWUxODsKCnN0cnVjdCBwb2ludCB7Cglkb3VibGUgT3gsIE95OwoJcG9pbnQoKSB7fQoJcG9pbnQoZG91YmxlIHgsIGRvdWJsZSB5KSA6IE94KHgpLCBPeSh5KSB7fQoJZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yID4+IChpc3RyZWFtJiBpbiwgcG9pbnQmIG8pIHsKCQlpbiA+PiBvLk94ID4+IG8uT3k7CgkJcmV0dXJuIGluOwoJfQoJZnJpZW5kIG9zdHJlYW0mIG9wZXJhdG9yIDw8IChvc3RyZWFtJiBvdXQsIGNvbnN0IHBvaW50JiBvKSB7CgkJb3V0IDw8IG8uT3ggPDwgJyAnIDw8IG8uT3k7CgkJcmV0dXJuIG91dDsKCX0KCWZyaWVuZCBwb2ludCBvcGVyYXRvciArIChjb25zdCBwb2ludCYgQSwgY29uc3QgcG9pbnQmIEIpIHtyZXR1cm4gcG9pbnQoQS5PeCArIEIuT3gsIEEuT3kgKyBCLk95KTt9CglmcmllbmQgcG9pbnQgb3BlcmF0b3IgLSAoY29uc3QgcG9pbnQmIEEsIGNvbnN0IHBvaW50JiBCKSB7cmV0dXJuIHBvaW50KEEuT3ggLSBCLk94LCBBLk95IC0gQi5PeSk7fQoJZnJpZW5kIHBvaW50IG9wZXJhdG9yICogKGNvbnN0IHBvaW50JiBBLCBjb25zdCBkb3VibGUmIHgpIHtyZXR1cm4gcG9pbnQoQS5PeCAqIHgsIEEuT3kgKiB4KTt9CglmcmllbmQgcG9pbnQgb3BlcmF0b3IgLyAoY29uc3QgcG9pbnQmIEEsIGNvbnN0IGRvdWJsZSYgeCkge3JldHVybiBwb2ludChBLk94IC8geCwgQS5PeSAvIHgpO30KCWRvdWJsZSBjcm9zcyhjb25zdCBwb2ludCYgQikgY29uc3Qge3JldHVybiBPeCAqIEIuT3kgLSBPeSAqIEIuT3g7fQoJZG91YmxlIGNyb3NzKGNvbnN0IHBvaW50JiBCLCBjb25zdCBwb2ludCYgQykgY29uc3Qge3JldHVybiAoQiAtICp0aGlzKS5jcm9zcyhDIC0gKnRoaXMpO30KCWRvdWJsZSBkb3QoY29uc3QgcG9pbnQmIEIpIHtyZXR1cm4gT3ggKiBCLk94ICsgT3kgKiBCLk95O30KCQoJZG91YmxlIGFuZ2xlKCkgY29uc3Qge3JldHVybiBhdGFuMmwoT3ksIE94KTt9Cglwb2ludCBwZXJwKCkgY29uc3Qge3JldHVybiBwb2ludChPeSwgLU94KTt9IC8vIHJvdGF0ZSA5MCBjY3cKCWRvdWJsZSBsZW5ndGgoKSBjb25zdCB7cmV0dXJuIHNxcnRsKE94ICogT3ggKyBPeSAqIE95KTt9Cglkb3VibGUgZGlzdChjb25zdCBwb2ludCYgQSkgY29uc3Qge3JldHVybiAoQSAtICp0aGlzKS5sZW5ndGgoKTt9Cn07Cgpib29sIGFjdXRlKGNvbnN0IHBvaW50JiBBLCBjb25zdCBwb2ludCYgQiwgY29uc3QgcG9pbnQmIEMpIHsgLy8gY2hlY2tzIGFuZ2xlIEFCQwoJcmV0dXJuIChBIC0gQikuZG90KEMgLSBCKSA+IC1lcHM7Cn0KCmRvdWJsZSBhbmdsZShjb25zdCBwb2ludCYgQSwgY29uc3QgcG9pbnQmIEIsIGNvbnN0IHBvaW50JiBDKSB7CglyZXR1cm4gYWNvc2wobWluKDEuMEwsIChBIC0gQikuZG90KEMgLSBCKSAvICgoQSAtIEIpLmxlbmd0aCgpICogKEMgLSBCKS5sZW5ndGgoKSkpKTsKfQoKc3RydWN0IGxpbmUgewoJZG91YmxlIGEsIGIsIGM7IC8vIGF4ICsgYnkgKyBjID0gMAoJbGluZSgpIHt9CglsaW5lKGNvbnN0IHBvaW50JiBBLCBjb25zdCBwb2ludCYgQikgewoJCWEgPSBBLk95IC0gQi5PeTsgYiA9IEIuT3ggLSBBLk94OwoJCWMgPSAtKGEgKiBBLk94ICsgYiAqIEEuT3kpOwoJfQoJZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yID4+IChpc3RyZWFtJiBpbiwgbGluZSYgZCkgewoJCWluID4+IGQuYSA+PiBkLmIgPj4gZC5jOwoJCXJldHVybiBpbjsKCX0KCWZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3V0LCBjb25zdCBsaW5lJiBkKSB7CgkJb3V0IDw8IGQuYSA8PCAnICcgPDwgZC5iIDw8ICcgJyA8PCBkLmM7CgkJcmV0dXJuIG91dDsKCX0KCQoJZG91YmxlIGRpc3QoY29uc3QgcG9pbnQmIEEpIGNvbnN0IHtyZXR1cm4gYWJzKGEgKiBBLk94ICsgYiAqIEEuT3kgKyBjKSAvIHNxcnRsKGEgKiBhICsgYiAqIGIpO30KCXBvaW50IGV2YWwoZG91YmxlIHgpIGNvbnN0IHtyZXR1cm4gcG9pbnQoeCwgKC1jIC0gYSAqIHgpIC8gYik7fQoJcG9pbnQgaW50ZXJzZWN0KGNvbnN0IGxpbmUmIGQpIGNvbnN0IHsKCQlpZiAoYWJzKGEgKiBkLmIgLSBiICogZC5hKSA8IGVwcykgcmV0dXJuIHBvaW50KGluZiwgaW5mKTsKCQlyZXR1cm4gcG9pbnQoYiAqIGQuYyAtIGQuYiAqIGMsIC1hICogZC5jICsgZC5hICogYykgLyAoYSAqIGQuYiAtIGQuYSAqIGIpOwoJfQp9OwoKc2lnbmVkIG1haW4oKSB7CgkKfQ==