#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 11111;
const double eps = 1e-6;
struct point_t {
double x, y;
point_t() { }
point_t(double tx, double ty) {
x = tx, y = ty;
}
point_t operator-(const point_t &r) const {
return point_t(x - r.x, y - r.y);
}
point_t operator+(const point_t &r) const {
return point_t(x + r.x, y + r.y);
}
point_t operator/(const double &r) {
return point_t(x / r, y / r);
}
point_t operator*(const double &r) {
return point_t(x * r, y * r);
}
} p[maxn], tp[maxn], sk[maxn];
int n, top;
double S, R;
double cross(point_t p1, point_t p2) {
return p1.x * p2.y - p1.y * p2.x;
}
double sqr(double x) { return x * x; }
double dist(point_t p1, point_t p2) {
p2 = p2 - p1;
return sqrt(sqr(p2.x) + sqr(p2.y));
}
point_t normalize(point_t p) {
double l = sqrt(sqr(p.x) + sqr(p.y));
return p / l;
}
int dblcmp(double x) {
return x < -eps ? -1 : x > eps;
}
bool cmp(const point_t &p1, const point_t &p2) {
return dblcmp(p1.y - p2.y) == 0 ? p1.x < p2.x : p1.y < p2.y;
}
void graham() {
sort(p + 1, p + 1 + n, cmp);
top = 2, sk[1] = p[1], sk[2] = p[2];
for (int i = 3; i <= n; ++i) {
while (top >= 2 && dblcmp(cross(p[i] - sk[top - 1], sk[top] - sk[top - 1])) >= 0) --top;
sk[++top] = p[i];
}
int ttop = top;
for (int i = n - 1; i >= 1; --i) {
while (top > ttop && dblcmp(cross(p[i] - sk[top - 1], sk[top] - sk[top - 1])) >= 0) --top;
sk[++top] = p[i];
}
--top;
n = top;
for (int i = 1; i <= n; ++i) {
p[i] = sk[i];
}
}
point_t inter(point_t a, point_t b, point_t c, point_t d) {
point_t p1 = b - a, p2 = d - c;
double a1 = p1.y, b1 = -p1.x, c1;
double a2 = p2.y, b2 = -p2.x, c2;
c1 = a1 * a.x + b1 * a.y;
c2 = a2 * c.x + b2 * c.y;
return point_t((c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1), (c1 * a2 - c2 * a1) / (b1 * a2 - b2 * a1));
}
void extend(double d) {
p[0] = p[n]; p[n + 1] = p[1];
for (int i = 1; i <= n; ++i) {
point_t p1 = p[i - 1], p2 = p[i], p3 = p[i + 1];
point_t v1 = normalize(p2 - p1);
swap(v1.x, v1.y);
v1.y = -v1.y;
point_t v2 = normalize(p3 - p2);
swap(v2.x, v2.y);
v2.y = -v2.y;
v1 = v1 * d, v2 = v2 * d;
tp[i] = inter(p1 + v1, p2 + v1, p2 + v2, p3 + v2);
}
}
char buf[1024];
double area() {
double ans = 0;
for (int i = 2; i <= n; ++i) {
ans += cross(tp[i - 1] - tp[1], tp[i] - tp[1]);
}
return fabs(ans) / 2;
}
double maxdist() {
tp[0] = tp[n], p[0] = p[n];
int to = 0;
double ans = 0;
for (int i = 0; i < n; ++i) {
while ((to + 1) % n != i && dblcmp(fabs(cross(tp[i + 1] - tp[i], p[to] - tp[i])) - fabs(cross(tp[i + 1] - tp[i], p[to + 1] - tp[i]))) <= 0) to = (to + 1) % n;
ans = max(ans, dist(tp[i], p[to]));
ans = max(ans, dist(tp[i + 1], p[to]));
}
return ans;
}
double work1() {
double begin = 0, end = 1e15, mid;
while (begin + 1e-9 < end) {
mid = (begin + end) / 2;
extend(mid);
double a = area();
if (a < S) {
begin = mid;
} else {
end = mid;
}
}
return end;
}
double work2() {
double begin = 0, end = 1e15, mid;
while (begin + 1e-9 < end) {
mid = (begin + end) / 2;
extend(mid);
double d = maxdist();
if (d > R) {
end = mid;
} else {
begin = mid;
}
}
return begin;
}
int main() {
while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; ++i) {
scanf("%s", buf);
sscanf(buf, "(%lf,%lf)", &p[i].x, &p[i].y);
}
scanf("%lf%lf", &S, &R);
graham();
double ans1 = work1(), ans2 = work2();
bool flag1 = true, flag2 = true;
extend(ans1);
if (dblcmp(area() - S) < 0) flag1 = false;
extend(ans2);
if (dblcmp(maxdist() - R) > 0) flag2 = false;
if (dblcmp(ans1 - ans2) > 0 || !flag1 || !flag2) {
puts("no appropriate design");
} else {
if (ans1 > ans2) swap(ans1, ans2);
printf("%.3lf %.3lf\n", ans1, ans2);
}
}
return 0;
}
IAojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgbWF4biA9IDExMTExOwpjb25zdCBkb3VibGUgZXBzID0gMWUtNjsKc3RydWN0IHBvaW50X3QgewogICAgZG91YmxlIHgsIHk7Cglwb2ludF90KCkgeyB9Cglwb2ludF90KGRvdWJsZSB0eCwgZG91YmxlIHR5KSB7CgkJeCA9IHR4LCB5ID0gdHk7Cgl9Cglwb2ludF90IG9wZXJhdG9yLShjb25zdCBwb2ludF90ICZyKSBjb25zdCB7CgkJcmV0dXJuIHBvaW50X3QoeCAtIHIueCwgeSAtIHIueSk7Cgl9Cglwb2ludF90IG9wZXJhdG9yKyhjb25zdCBwb2ludF90ICZyKSBjb25zdCB7CgkJcmV0dXJuIHBvaW50X3QoeCArIHIueCwgeSArIHIueSk7Cgl9Cglwb2ludF90IG9wZXJhdG9yLyhjb25zdCBkb3VibGUgJnIpIHsKCQlyZXR1cm4gcG9pbnRfdCh4IC8gciwgeSAvIHIpOwoJfQoJcG9pbnRfdCBvcGVyYXRvciooY29uc3QgZG91YmxlICZyKSB7CgkJcmV0dXJuIHBvaW50X3QoeCAqIHIsIHkgKiByKTsKCX0KfSBwW21heG5dLCB0cFttYXhuXSwgc2tbbWF4bl07CmludCBuLCB0b3A7CmRvdWJsZSBTLCBSOwogCmRvdWJsZSBjcm9zcyhwb2ludF90IHAxLCBwb2ludF90IHAyKSB7CglyZXR1cm4gcDEueCAqIHAyLnkgLSBwMS55ICogcDIueDsKfQogCmRvdWJsZSBzcXIoZG91YmxlIHgpIHsgcmV0dXJuIHggKiB4OyB9CmRvdWJsZSBkaXN0KHBvaW50X3QgcDEsIHBvaW50X3QgcDIpIHsKCXAyID0gcDIgLSBwMTsKCXJldHVybiBzcXJ0KHNxcihwMi54KSArIHNxcihwMi55KSk7Cn0KIApwb2ludF90IG5vcm1hbGl6ZShwb2ludF90IHApIHsKCWRvdWJsZSBsID0gc3FydChzcXIocC54KSArIHNxcihwLnkpKTsKCXJldHVybiBwIC8gbDsKfQogCmludCBkYmxjbXAoZG91YmxlIHgpIHsKCXJldHVybiB4IDwgLWVwcyA/IC0xIDogeCA+IGVwczsKfQogCmJvb2wgY21wKGNvbnN0IHBvaW50X3QgJnAxLCBjb25zdCBwb2ludF90ICZwMikgewoJcmV0dXJuIGRibGNtcChwMS55IC0gcDIueSkgPT0gMCA/IHAxLnggPCBwMi54IDogcDEueSA8IHAyLnk7Cn0KIAp2b2lkIGdyYWhhbSgpIHsKCXNvcnQocCArIDEsIHAgKyAxICsgbiwgY21wKTsKCXRvcCA9IDIsIHNrWzFdID0gcFsxXSwgc2tbMl0gPSBwWzJdOwoJZm9yIChpbnQgaSA9IDM7IGkgPD0gbjsgKytpKSB7CgkJd2hpbGUgKHRvcCA+PSAyICYmIGRibGNtcChjcm9zcyhwW2ldIC0gc2tbdG9wIC0gMV0sIHNrW3RvcF0gLSBza1t0b3AgLSAxXSkpID49IDApIC0tdG9wOwoJCXNrWysrdG9wXSA9IHBbaV07Cgl9CglpbnQgdHRvcCA9IHRvcDsKCWZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAxOyAtLWkpIHsKCQl3aGlsZSAodG9wID4gdHRvcCAmJiBkYmxjbXAoY3Jvc3MocFtpXSAtIHNrW3RvcCAtIDFdLCBza1t0b3BdIC0gc2tbdG9wIC0gMV0pKSA+PSAwKSAtLXRvcDsKCQlza1srK3RvcF0gPSBwW2ldOwoJfQoJLS10b3A7CgluID0gdG9wOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJcFtpXSA9IHNrW2ldOwoJfQp9CiAKcG9pbnRfdCBpbnRlcihwb2ludF90IGEsIHBvaW50X3QgYiwgcG9pbnRfdCBjLCBwb2ludF90IGQpIHsKCXBvaW50X3QgcDEgPSBiIC0gYSwgcDIgPSBkIC0gYzsKCWRvdWJsZSBhMSA9IHAxLnksIGIxID0gLXAxLngsIGMxOwoJZG91YmxlIGEyID0gcDIueSwgYjIgPSAtcDIueCwgYzI7CgljMSA9IGExICogYS54ICsgYjEgKiBhLnk7CgljMiA9IGEyICogYy54ICsgYjIgKiBjLnk7CglyZXR1cm4gcG9pbnRfdCgoYzEgKiBiMiAtIGMyICogYjEpIC8gKGExICogYjIgLSBhMiAqIGIxKSwgKGMxICogYTIgLSBjMiAqIGExKSAvIChiMSAqIGEyIC0gYjIgKiBhMSkpOwp9CiAKdm9pZCBleHRlbmQoZG91YmxlIGQpIHsKCXBbMF0gPSBwW25dOyBwW24gKyAxXSA9IHBbMV07Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQlwb2ludF90IHAxID0gcFtpIC0gMV0sIHAyID0gcFtpXSwgcDMgPSBwW2kgKyAxXTsKCQlwb2ludF90IHYxID0gbm9ybWFsaXplKHAyIC0gcDEpOwoJCXN3YXAodjEueCwgdjEueSk7CgkJdjEueSA9IC12MS55OwoJCXBvaW50X3QgdjIgPSBub3JtYWxpemUocDMgLSBwMik7CgkJc3dhcCh2Mi54LCB2Mi55KTsKCQl2Mi55ID0gLXYyLnk7CSAgIAoJCXYxID0gdjEgKiBkLCB2MiA9IHYyICogZDsKCQl0cFtpXSA9IGludGVyKHAxICsgdjEsIHAyICsgdjEsIHAyICsgdjIsIHAzICsgdjIpOyAgCgl9Cn0KIApjaGFyIGJ1ZlsxMDI0XTsKIApkb3VibGUgYXJlYSgpIHsKCWRvdWJsZSBhbnMgPSAwOwoJZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgKytpKSB7CgkJYW5zICs9IGNyb3NzKHRwW2kgLSAxXSAtIHRwWzFdLCB0cFtpXSAtIHRwWzFdKTsKCX0KCXJldHVybiBmYWJzKGFucykgLyAyOwp9CiAKZG91YmxlIG1heGRpc3QoKSB7Cgl0cFswXSA9IHRwW25dLCBwWzBdID0gcFtuXTsKCWludCB0byA9IDA7Cglkb3VibGUgYW5zID0gMDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJd2hpbGUgKCh0byArIDEpICUgbiAhPSBpICYmIGRibGNtcChmYWJzKGNyb3NzKHRwW2kgKyAxXSAtIHRwW2ldLCBwW3RvXSAtIHRwW2ldKSkgLSBmYWJzKGNyb3NzKHRwW2kgKyAxXSAtIHRwW2ldLCBwW3RvICsgMV0gLSB0cFtpXSkpKSA8PSAwKSB0byA9ICh0byArIDEpICUgbjsKCQlhbnMgPSBtYXgoYW5zLCBkaXN0KHRwW2ldLCBwW3RvXSkpOwoJCWFucyA9IG1heChhbnMsIGRpc3QodHBbaSArIDFdLCBwW3RvXSkpOwoJfQoJcmV0dXJuIGFuczsKfQogCmRvdWJsZSB3b3JrMSgpIHsKCWRvdWJsZSBiZWdpbiA9IDAsIGVuZCA9IDFlMTUsIG1pZDsKCXdoaWxlIChiZWdpbiArIDFlLTkgPCBlbmQpIHsKCQltaWQgPSAoYmVnaW4gKyBlbmQpIC8gMjsKCQlleHRlbmQobWlkKTsKCQlkb3VibGUgYSA9IGFyZWEoKTsKCQlpZiAoYSA8IFMpIHsKCQkJYmVnaW4gPSBtaWQ7CgkJfSBlbHNlIHsKCQkJZW5kID0gbWlkOwoJCX0KCX0KCXJldHVybiBlbmQ7Cn0KIApkb3VibGUgd29yazIoKSB7Cglkb3VibGUgYmVnaW4gPSAwLCBlbmQgPSAxZTE1LCBtaWQ7Cgl3aGlsZSAoYmVnaW4gKyAxZS05IDwgZW5kKSB7CgkJbWlkID0gKGJlZ2luICsgZW5kKSAvIDI7CgkJZXh0ZW5kKG1pZCk7CgkJZG91YmxlIGQgPSBtYXhkaXN0KCk7CgkJaWYgKGQgPiBSKSB7CgkJCWVuZCA9IG1pZDsKCQl9IGVsc2UgewoJCQliZWdpbiA9IG1pZDsKCQl9Cgl9CglyZXR1cm4gYmVnaW47Cn0KIAppbnQgbWFpbigpIHsKCXdoaWxlIChzY2FuZigiJWQiLCAmbikgIT0gRU9GKSB7CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJCXNjYW5mKCIlcyIsIGJ1Zik7CgkJCXNzY2FuZihidWYsICIoJWxmLCVsZikiLCAmcFtpXS54LCAmcFtpXS55KTsKCQl9CgkJc2NhbmYoIiVsZiVsZiIsICZTLCAmUik7CgkJZ3JhaGFtKCk7CgkJZG91YmxlIGFuczEgPSB3b3JrMSgpLCBhbnMyID0gd29yazIoKTsKCQlib29sIGZsYWcxID0gdHJ1ZSwgZmxhZzIgPSB0cnVlOwoJCWV4dGVuZChhbnMxKTsKCQlpZiAoZGJsY21wKGFyZWEoKSAtIFMpIDwgMCkgZmxhZzEgPSBmYWxzZTsKCQlleHRlbmQoYW5zMik7CgkJaWYgKGRibGNtcChtYXhkaXN0KCkgLSBSKSA+IDApIGZsYWcyID0gZmFsc2U7CgkJaWYgKGRibGNtcChhbnMxIC0gYW5zMikgPiAwIHx8ICFmbGFnMSB8fCAhZmxhZzIpIHsKCQkJcHV0cygibm8gYXBwcm9wcmlhdGUgZGVzaWduIik7CgkJfSBlbHNlIHsKCQkJaWYgKGFuczEgPiBhbnMyKSBzd2FwKGFuczEsIGFuczIpOwoJCQlwcmludGYoIiUuM2xmICUuM2xmXG4iLCBhbnMxLCBhbnMyKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==