#include <iostream>
#include<cmath>
#include<string>
#include <iomanip>
#include<algorithm>
#include<vector>
using namespace std;
int r1[100];
int p1[100];
int p2[100];
int main(void){
cin.tie(0),iostream::sync_with_stdio(0);
int n,m,k;
cin>>n;
for(int i=0;i<n;i++)
    cin>>r1[i];
cin>>m;
for(int i=0;i<m;i++)
    cin>>p1[i];
cin>>k;
for(int i=0;i<k;i++)
    cin>>p2[i];
sort(r1,r1+n);
sort(p1,p1+m);
sort(p2,p2+k);
double A,B,c;
cin>>A>>B;
c=A/B;
double r2=(p1[m-1]*r1[n-1]*r1[n-1])/(c*p2[0]+p1[m-1]);
r2=sqrt(r2);
cout<<fixed<<setprecision(12)<<r2;

}


#include <iostream>
#include<cmath>
#include<string>
#include <iomanip>
#include<algorithm>
#include<vector>
using namespace std;
int r1[100000];
int p1[100000];
int p2[100000];
int main(void){
cin.tie(0),iostream::sync_with_stdio(0);
int n,m,k;
cin>>n;
for(int i=0;i<n;i++)
    cin>>r1[i];
cin>>m;
for(int i=0;i<m;i++)
    cin>>p1[i];
cin>>k;
for(int i=0;i<k;i++)
    cin>>p2[i];
sort(r1,r1+n);
sort(p1,p1+m);
sort(p2,p2+k);
double A,B,c;
cin>>A>>B;
c=A/B;
double r2=p1[m-1]/(c*p2[0]+p1[m-1]);
r2=r2*r1[n-1]*r1[n-1];
r2=sqrt(r2);
cout<<fixed<<setprecision(12)<<r2;

}


#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <map>
#define for1(x,y) for(long long x = 1; x<ll(y); x++)
#define forn(x,y,z) for(long long x = y; x< ll(z); x++)
#define for0(x,y,z) for(long long x = y; x< ll(z); x++)
# define PII pair<int,int>
# define FF first
# define SS second
# define PB push_back

#define forn(x,y,z) for(long long x = y; x< ll(z); x++)
#define for0(x,y,z) for(long long x = y; x< ll(z); x++)
using namespace std;
typedef long long ll;
typedef long double ld;

#define maxn 1000015
const double EPS = (1e-7), EPSm= (1e7);
const ll linf = (ll)1e17 + 5;
long double PI = 3.14159265359;
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{1,1},{-1,1},{1,-1}};

const int MAXN = 1e5 + 10;
const int NINF = -1e5;
const int INF = 1e5;

void solve()
{
	int n,r1=NINF,p1=NINF,p2=INF;
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		r1=max(r1,x);
	}
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		p1=max(p1,x);
	}
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		p2=min(p2,x);
	}
	double a,b;
	cin>>a>>b;
	//cout<<r1<<" "<<p1<<" "<<p2<<endl;
	cout<<fixed<<setprecision(12);
	double r2=(double)r1*sqrtf((double)b*p1/(b*p1+a*p2));
	cout<<r2;
	return;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	setprecision(20);
	int test;
	//cin >> test;
	//while(test--)
		solve();
	return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <map>
#define for1(x,y) for(long long x = 1; x<ll(y); x++)
#define forn(x,y,z) for(long long x = y; x< ll(z); x++)
#define for0(x,y,z) for(long long x = y; x< ll(z); x++)
# define PII pair<int,int>
# define FF first
# define SS second
# define PB push_back

#define forn(x,y,z) for(long long x = y; x< ll(z); x++)
#define for0(x,y,z) for(long long x = y; x< ll(z); x++)
using namespace std;
typedef long long ll;
typedef long double ld;

#define maxn 1000015
const double EPS = (1e-7), EPSm= (1e7);
const ll linf = (ll)1e17 + 5;
long double PI = 3.14159265359;
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{1,1},{-1,1},{1,-1}};

const int MAXN = 1e5 + 10;
const int NINF = -1e5;
const int INF = 1e5;

void solve()
{
	int n,r1=NINF,p1=NINF,p2=INF;
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		r1=max(r1,x);
	}
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		p1=max(p1,x);
	}
	cin>>n;
	forn(i,0,n){
		int x;
		cin>>x;
		p2=min(p2,x);
	}
	double a,b;
	cin>>a>>b;
	cout<<r1<<" "<<p1<<" "<<p2<<endl;
	cout<<fixed<<setprecision(12);
	double r2=(double)r1*sqrtf((double)b*p1/(b*p1+a*p2));
	cout<<r2;
	return;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	setprecision(20);
	int test;
	//cin >> test;
	//while(test--)
		solve();
	return 0;
}


//============================================================================
// Name        : ICPC.cpp
// Author      : MaTb3aa
// Quotes      : Nothing is impossible, the word itself says 'I'm possible'!.
// Copyright   : Audrey Hepburn
// Description : You Can Do It
//============================================================================
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define endl                         '\n'
#define Ceil(x,y)             ((x+y-1)/y)
#define sz(s)               (int)s.size()
#define RT(x)           return cout<<x,0;
#define mem(x,y)    memset(x,y,sizeof(x))
#define all(v) ((v).begin()), ((v).end())
int dx[] = { 0, 0, 1, -1, 1, -1, 1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

const double pi = acos(-1), eps = 1e-9;
const int OO = 0x3f3f3f3f, N = 1e6 + 5, mod = 1e9 + 7;
using namespace std;
typedef long long ll;
ll gcd(ll x, ll y) { return (!y) ? x : gcd(y, x%y); }
ll lcm(ll x, ll y) { return ((x / gcd(x, y))*y); }

void file() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif  !ONLINEJUDGE
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}

int main() {
	file();
	int n;
	vector<int>X, Y, Z;
	cin >> n;
	X.resize(n);
	for (int i = 0; i < n; i++)cin >> X[i];
	cin >> n; Y.resize(n);
	for (int i = 0; i < n; i++)cin >> Y[i];
	cin >> n; Z.resize(n);
	for (int i = 0; i < n; i++)cin >> Z[i];
	int a, b; cin >> a >> b;
	double mx = 0;
	for (int i = 0; i < X.size(); i++) {
		for (int j = 0; j < Y.size(); j++) {
			for (int k = 0; k < Z.size(); k++) {
				double r1 = X[i], p1 = Y[j], p2 = Z[k];
				double cur = sqrt(p1*r1*r1*b / (a*p2 + p1 * b));
				if (cur < r1)
					mx = max(mx, cur);
			}
		}
	}
	cout << fixed << setprecision(9);
	cout << mx << endl;
	return 0;
}


//============================================================================
// Name        : ICPC.cpp
// Author      : MaTb3aa
// Quotes      : Nothing is impossible, the word itself says 'I'm possible'!.
// Copyright   : Audrey Hepburn
// Description : You Can Do It
//============================================================================
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define endl                         '\n'
#define Ceil(x,y)             ((x+y-1)/y)
#define sz(s)               (int)s.size()
#define RT(x)           return cout<<x,0;
#define mem(x,y)    memset(x,y,sizeof(x))
#define all(v) ((v).begin()), ((v).end())
int dx[] = { 0, 0, 1, -1, 1, -1, 1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

const double pi = acos(-1), eps = 1e-9;
const int OO = 0x3f3f3f3f, N = 1e6 + 5, mod = 1e9 + 7;
using namespace std;
typedef long long ll;
ll gcd(ll x, ll y) { return (!y) ? x : gcd(y, x%y); }
ll lcm(ll x, ll y) { return ((x / gcd(x, y))*y); }

void file() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif  !ONLINEJUDGE
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}

int main() {
	file();
	int n;
	vector<int>X, Y, Z;
	cin >> n;
	X.resize(n);
	for (int i = 0; i < n; i++)cin >> X[i];
	cin >> n; Y.resize(n);
	for (int i = 0; i < n; i++)cin >> Y[i];
	cin >> n; Z.resize(n);
	for (int i = 0; i < n; i++)cin >> Z[i];
	int a, b; cin >> a >> b;
	double mx = 0;
	sort(all(X));
	sort(all(Y));
	sort(all(Z));
		for (int j = 0; j < Y.size(); j++) {
			for (int k = 0; k < Z.size(); k++) {
				double r1 , p1 = Y[j], p2 = Z[k];
				int st = 0, ed = X.size() - 1, cur, md;
				while (st <= ed) {
					md = st + ed >> 1;
					r1 = X[md];
				double r2 = sqrt(p1*r1*r1*b / (a*p2 + p1 * b));
					if (r2 < r1) {
						mx = max(mx, r2);
						st = md + 1;
					}
					else ed = md - 1;

				}
			}
		}

	cout << fixed << setprecision(9);
	cout << mx << endl;
	return 0;
}


//============================================================================
// Name        : ICPC.cpp
// Author      : MaTb3aa
// Quotes      : Nothing is impossible, the word itself says 'I'm possible'!.
// Copyright   : Audrey Hepburn
// Description : You Can Do It
//============================================================================
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define endl                         '\n'
#define Ceil(x,y)             ((x+y-1)/y)
#define sz(s)               (int)s.size()
#define RT(x)           return cout<<x,0;
#define mem(x,y)    memset(x,y,sizeof(x))
#define all(v) ((v).begin()), ((v).end())
int dx[] = { 0, 0, 1, -1, 1, -1, 1, -1 };
int dy[] = { 1, -1, 0, 0, -1, 1, 1, -1 };

const double pi = acos(-1), eps = 1e-9;
const int OO = 0x3f3f3f3f, N = 1e6 + 5, mod = 1e9 + 7;
using namespace std;
typedef long long ll;
ll gcd(ll x, ll y) { return (!y) ? x : gcd(y, x%y); }
ll lcm(ll x, ll y) { return ((x / gcd(x, y))*y); }

void file() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif  !ONLINEJUDGE
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
}

int main() {
	file();
	int n;
	vector<int>X, Y, Z;
	cin >> n;
	X.resize(n);
	for (int i = 0; i < n; i++)cin >> X[i];
	cin >> n; Y.resize(n);
	for (int i = 0; i < n; i++)cin >> Y[i];
	cin >> n; Z.resize(n);
	for (int i = 0; i < n; i++)cin >> Z[i];
	int a, b; cin >> a >> b;
	double mx = 0;
	sort(X.rbegin(), X.rend());
	sort(Y.rbegin(), Y.rend());
	sort(all(Z));
	for (int i = 0; i < X.size(); i++) {
		for (int j = 0; j < Y.size(); j++) {
			double r1 = X[i], p1 = Y[j], p2;
			int st = 0, ed = Z.size() - 1,md,cur;
			while (st <= ed) {
				md = st + ed >> 1;
				p2 = Z[md];
				double tst = sqrt(p1*r1*r1*b / (a*p2 + p1 * b));
				if (tst < r1&&tst>mx) {
					cur = md;
					mx = max(mx, tst);
					ed = md - 1;
				}
				else st = md + 1;
			}
		}
	}
	cout << fixed << setprecision(9);
	cout << mx << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

const int NAX = 5000;

int main() {
	int n, x[NAX], m, y[NAX], k, z[NAX], A, B;
	cin >> n;
	for (int i=0; i<n; ++i) cin >> x[i];
	cin >> m;
	for (int i=0; i<m; ++i) cin >> y[i];
	cin >> k;
	for (int i=0; i<k; ++i) cin >> z[i];
	cin >> A >> B;

	sort(z, z+k);
	int p2 = z[0];
	//cout << p1 << " " << p2 << endl;
	double ans = 0;
	for (int i=0; i<n; ++i) {
		for (int j=0; j<m; ++j) {
			double temp = sqrt((pow(x[i], 2) * y[j] * B) / (A * p2 + B * y[j]));
			ans = max(ans, temp);
		}
	}

	printf("%.10f", ans);
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

const int NAX = 5005;

int main() {
	int n, x[NAX], m, y[NAX], k, z[NAX], A, B;
	cin >> n;
	for (int i=0; i<n; ++i) cin >> x[i];
	cin >> m;
	for (int i=0; i<m; ++i) cin >> y[i];
	cin >> k;
	for (int i=0; i<k; ++i) cin >> z[i];
	cin >> A >> B;

	sort(z, z+k);
	int p2 = z[0];
	//cout << p1 << " " << p2 << endl;
	double ans = 0;
	for (int i=0; i<n; ++i) {
		for (int j=0; j<m; ++j) {
			double temp = sqrt((pow(x[i], 2) * y[j] * B) / (A * p2 + B * y[j]));
			ans = max(ans, temp);
		}
	}

	printf("%.10f", ans);
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

const int NAX = 5000;

int main() {
	int n, x[NAX], m, y[NAX], k, z[NAX], A, B;
	cin >> n;
	for (int i=0; i<n; ++i) cin >> x[i];
	cin >> m;
	for (int i=0; i<m; ++i) cin >> y[i];
	cin >> k;
	for (int i=0; i<k; ++i) cin >> z[i];
	cin >> A >> B;

	double ans = 0;
	for (int i=0; i<n; ++i) {
		for (int j=0; j<m; ++j) {
			for (int l=0; l<k; ++l) {
				int tuso = pow(x[i], 2) * y[j] * B;
				int mauso = A * z[l] + B * y[j];
				double temp = (double)tuso / mauso;
				temp = sqrt(temp);
				ans = max(ans, temp);
			}
		}
	}

	printf("%.10f", ans);
	return 0;
}


#include <bits/stdc++.h>
using namespace std;

const int NAX = 5000;

int main() {
	int n, x[NAX], m, y[NAX], k, z[NAX], A, B;
	cin >> n;
	for (int i=0; i<n; ++i) cin >> x[i];
	cin >> m;
	for (int i=0; i<m; ++i) cin >> y[i];
	cin >> k;
	for (int i=0; i<k; ++i) cin >> z[i];
	cin >> A >> B;

	sort(z, z+k);
	int p2 = z[0];
	//cout << p1 << " " << p2 << endl;
	double ans = 0;
	for (int i=0; i<n; ++i) {
		for (int j=0; j<m; ++j) {
			int tuso = pow(x[i], 2) * y[j] * B;
			int mauso = A * p2 + B * y[j];
			double temp = (double)tuso / mauso;
			temp = sqrt(temp);
			ans = max(ans, temp);
		}
	}

	printf("%.10f", ans);
	return 0;
}


#include <iostream>
#include <string>
#include <cctype>
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
using ll = long long;
bool check(ll x,ll y,ll z ,ll s){
    return ((z>=x&&z<=y)||(s>=x&&s<=y)||(x>=z&&x<=s)||(y>=z&&y<=s));
}
 int main(){
    int n1 ;
    cin>>n1;
    vector<int>v1;
    for(int i=0;i<n1;i++){
        int x;
        cin>>x;
        v1.push_back(x);
    }
    int n2;
    cin>>n2;
    vector<int>v2;
    for(int i=0;i<n2;i++){
        int x;
        cin>>x;
        v2.push_back(x);
    }
    vector<int>v3;
    int n3;
    cin>>n3;
    for(int i=0;i<n3;i++){
        int x;
        cin>>x;
        v3.push_back(x);
    }
    int a,b;
    cin>>a>>b;
    sort(begin(v1),end(v1));
    sort(begin(v2),end(v2));
    sort(begin(v3),end(v3));
    double r1=v1[n1-1];
    double p2=v3[0];
    double p1=v2[n2-1];
    double result=pow(r1,2)/(1+(a*p2)/(b*p1));
    cout<<sqrt(result)<<endl;
    return 0;
 }


#include <iostream>
#include <string>
#include <cctype>
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
using ll = long long;
bool check(ll x,ll y,ll z ,ll s){
    return ((z>=x&&z<=y)||(s>=x&&s<=y)||(x>=z&&x<=s)||(y>=z&&y<=s));
}
 int main(){
    int n1 ;
    cin>>n1;
    vector<int>v1;
    for(int i=0;i<n1;i++){
        int x;
        cin>>x;
        v1.push_back(x);
    }
    int n2;
    cin>>n2;
    vector<int>v2;
    for(int i=0;i<n2;i++){
        int x;
        cin>>x;
        v2.push_back(x);
    }
    vector<int>v3;
    int n3;
    cin>>n3;
    for(int i=0;i<n3;i++){
        int x;
        cin>>x;
        v3.push_back(x);
    }
    int a,b;
    cin>>a>>b;
    sort(begin(v1),end(v1));
    sort(begin(v2),end(v2));
    sort(begin(v3),end(v3));
    double r1=v1[n1-1];
    double p2=v3[0];
    double p1=v2[n2-1];
    double result=pow(r1,2)/(1+(a*p2)/(b*p1));
    cout.precision(12);
    cout<<sqrt(result)<<endl;
    return 0;
 }


#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include <set>
#include <iterator>
#include <map>
#include <algorithm>
#include <deque>
#include <list>
#include <iomanip>
using namespace std;
int main()
{
    double n,ele;
    cin>>n;
    vector<double>r1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        r1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p2;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p2.emplace_back(ele);
    }
    double a,b;
    cin>>a>>b;
    set<double,greater<double>>r2;
    for(double i=0;i<r1.size();i++)
    {
        for(double r=0;r<p1.size();r++)
        {
            for(double j=0;j<p2.size();j++)
            {
                r2.insert(sqrt((b*p1[r]*r1[i]*r1[i])/((a*p2[j])+(b*p1[r]))));
            }
        }
    }
    cout<<fixed<<setprecision(12)<<*r2.begin();
    return 0;
}


#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include <set>
#include <iterator>
#include <map>
#include <algorithm>
#include <deque>
#include <list>
#include <iomanip>
#include <math.h>
#include <cmath>
using namespace std;
int main()
{
    double n,ele;
    cin>>n;
    vector<double>r1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        r1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p2;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p2.emplace_back(ele);
    }
    double a,b;
    cin>>a>>b;
    set<double,greater<double>>r2;
    for(double i=0;i<r1.size();i++)
    {
        for(double r=0;r<p1.size();r++)
        {
            for(double j=0;j<p2.size();j++)
            {
                r2.insert(sqrt((b*p1[r]*r1[i]*r1[i])/((a*p2[j])+(b*p1[r]))));
            }
        }
    }
    cout<<fixed<<setprecision(12)<<*r2.begin();
    return 0;
}


#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include <set>
#include <iterator>
#include <map>
#include <algorithm>
#include <deque>
#include <list>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
    double n,ele;
    cin>>n;
    vector<double>r1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        r1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p2;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p2.emplace_back(ele);
    }
    double a,b;
    cin>>a>>b;
    partial_sort(p1.begin(),p1.begin()+1,p1.end(),greater<double>());
    partial_sort(p2.begin(),p2.begin()+1,p2.end());
    partial_sort(r1.begin(),r1.begin()+1,r1.end(),greater<double>());
    double po=*p1.begin(),pt=*p2.begin(),r=*r1.begin();
    cout<<fixed<<setprecision(12)<<sqrt((b*po*r*r)/((a*pt)+(b*po)));
    return 0;
}


#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include <set>
#include <iterator>
#include <map>
#include <algorithm>
#include <deque>
#include <list>
#include <iomanip>
using namespace std;
int main()
{
    double n,ele;
    cin>>n;
    vector<double>r1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        r1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p1;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p1.emplace_back(ele);
    }
    cin>>n;
    vector<double>p2;
    for(double i=0;i<n;i++)
    {
        cin>>ele;
        p2.emplace_back(ele);
    }
    double a,b;
    cin>>a>>b;
    set<double,greater<double>>r2;
    for(double i=0;i<r1.size();i++)
    {
        for(double r=0;r<p1.size();r++)
        {
            for(double j=0;j<p2.size();j++)
            {
                r2.insert(sqrt((b*p1[r]*r1[i]*r1[i])/((a*p2[j])+(b*p1[r]))));
            }
        }
    }
    cout<<*r2.begin();
    return 0;
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <iomanip>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> vec1(n);
	for (size_t i = 0; i < n; i++)
		cin >> vec1[i];

	int m;
	cin >> m;
	vector<int> vec2(m);
	for (size_t i = 0; i < m; i++)
		cin >> vec2[i];

	int k;
	cin >> k;
	vector<int> vec3(k);
	for (size_t i = 0; i < k; i++)
		cin >> vec3[i];

	int a, b;
	cin >> a >> b;
	double res = 0.0;
	for (size_t i = 0; i < n; i++) {
		for (size_t j = 0; j < m; j++) {
			for (size_t h = 0; h < k; h++) {
				if ((double)sqrt((double)(b*vec2[j] * vec1[i] * vec1[i]) / (a * vec3[h] + b * vec2[j])) > res)
					res = (double)sqrt((double)(b*vec2[j] * vec1[i] * vec1[i]) / (a * vec3[h] + b * vec2[j]));
			}
		}
	}

	cout << fixed << setprecision(12) << res << endl;

//	system("pause");
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <iomanip>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> vec1(n);
	for (size_t i = 0; i < n; i++)
		cin >> vec1[i];

	int m;
	cin >> m;
	vector<int> vec2(m);
	for (size_t i = 0; i < m; i++)
		cin >> vec2[i];

	int k;
	cin >> k;
	vector<int> vec3(k);
	for (size_t i = 0; i < k; i++)
		cin >> vec3[i];

	int a, b;
	cin >> a >> b;
	double res = 0.0;

	double i = *max_element(vec1.begin(), vec1.end());
	double j = *max_element(vec2.begin(), vec2.end());
	double h = *min_element(vec3.begin(), vec3.end());
	res = (double)sqrt((double)(b*j * i * i) / (double)(a * h + b * j));

	cout << fixed << setprecision(12) << res << endl;

//	system("pause");
}


#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <iomanip>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> vec1(n);
	for (size_t i = 0; i < n; i++)
		cin >> vec1[i];

	int m;
	cin >> m;
	vector<int> vec2(m);
	for (size_t i = 0; i < m; i++)
		cin >> vec2[i];

	int k;
	cin >> k;
	vector<int> vec3(k);
	for (size_t i = 0; i < k; i++)
		cin >> vec3[i];

	int a, b;
	cin >> a >> b;
	double res = 0.0;

	int i = *max_element(vec1.begin(), vec1.end());
	int j = *max_element(vec2.begin(), vec2.end());
	int h = *min_element(vec3.begin(), vec3.end());
	res = (double)sqrt((double)(b*j * i * i) / (a * h + b * j));

	cout << fixed << setprecision(12) << res << endl;

//	system("pause");
}


#include<bits/stdc++.h>
#include <string>
#include <unordered_map>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define allr(s) s.rbegin(),s.rend()
#define RT(s) return cout<<s,0
#define watch(x) cout<<(#x)<<" = "<<x<<endl
#define sz(s)	(int)(s.size())
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
void file() {
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
#endif
}
void fast() {
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL);
}
int main() {
	file();
	fast();
	ll p1 = 0, r1 = 0, p2 = INT_MAX;
	ll n, x;
	cin >> n;
	while (n--) {
		cin >> x;
		r1 = max(r1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p1 = max(p1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		if(x <= 0)
			continue;
		p2 = min(p2, x);
	}
	int a, b;
	cin >> a >> b;
	double r2 = (r1 * r1 *b * p1 / (double) (a * p2 + b * p1));
	r2 = sqrt(r2);
	cout << fixed << setprecision(12) << r2 << endl;
	return 0;
}


#include<bits/stdc++.h>
#include <string>
#include <unordered_map>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define allr(s) s.rbegin(),s.rend()
#define RT(s) return cout<<s,0
#define watch(x) cout<<(#x)<<" = "<<x<<endl
#define sz(s)	(int)(s.size())
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
void file() {
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
#endif
}
void fast() {
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL);
}
int main() {
	file();
	fast();
	int p1 = 0, r1 = 0, p2 = INT_MAX;
	int n, x;
	cin >> n;
	while (n--) {
		cin >> x;
		r1 = max(r1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p1 = max(p1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p2 = min(p2, x);
	}
	int a, b;
	cin >> a >> b;
	double r2 = (r1 * r1 *b * p1 / (double) (a * p2 + b * p1));
	r2 = sqrt(r2);
	cout << fixed << setprecision(12) << r2 << endl;
	int k;
	return 0;
}


#include<bits/stdc++.h>
#include <string>
#include <unordered_map>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define allr(s) s.rbegin(),s.rend()
#define RT(s) return cout<<s,0
#define watch(x) cout<<(#x)<<" = "<<x<<endl
#define sz(s)	(int)(s.size())
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
void file() {
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
#endif
}
void fast() {
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL);
}
int main() {
	file();
	fast();
	int p1 = 0, r1 = 0, p2 = INT_MAX;
	int n, x;
	cin >> n;
	while (n--) {
		cin >> x;
		r1 = max(r1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p1 = max(p1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		if(x <= 0)
			continue;
		p2 = min(p2, x);
	}
	int a, b;
	cin >> a >> b;
	double r2 = (r1 * r1 *b * p1 / (double) (a * p2 + b * p1));
	r2 = sqrt(r2);
	cout << fixed << setprecision(12) << r2 << endl;
	return 0;
}


#include<bits/stdc++.h>
#include <string>
#include <unordered_map>
#define endl "\n"
#define all(v) v.begin(),v.end()
#define allr(s) s.rbegin(),s.rend()
#define RT(s) return cout<<s,0
#define watch(x) cout<<(#x)<<" = "<<x<<endl
#define sz(s)	(int)(s.size())
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
void file() {
#ifndef ONLINE_JUDGE
	freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
#endif
}
void fast() {
	std::ios_base::sync_with_stdio(0);
	cin.tie(NULL);
}
int main() {
	file();
	fast();
	int p1 = 0, r1 = 0, p2 = INT_MAX;
	int n, x;
	cin >> n;
	while (n--) {
		cin >> x;
		r1 = max(r1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p1 = max(p1, x);
	}
	cin >> n;
	while (n--) {
		cin >> x;
		p2 = min(p2, x);
	}
	int a, b;
	cin >> a >> b;
	double r2 = (r1 * r1 *b * p1 / (double) (a * p2 + b * p1));
	r2 = sqrt(r2);
	cout << fixed << setprecision(12) << r2 << endl;
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> aux;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   cout << std::fixed;
   cout << std::setprecision(5);
   cout << sqrt((r1*r1*b*p1)/(a*p2+b*p1));
   return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> p2;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   cout << r1*sqrt(b*p1/(a*p2+b*p1));
   return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> aux;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   cout << sqrt((r1*r1*b*p1)/(a*p2+b*p1));
   return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> p2;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   cout << sqrt((r1*r1)/((a*p2/b*p1)+1));
   return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> aux;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   printf("%.5f", sqrt((r1*r1*b*p1)/(a*p2+b*p1)));
   return 0;
}


#include <bits/stdc++.h>
using namespace std;
int main(){
   int r1cant, p1cant, p2cant;
   double r1 = 0,p1 = 0,p2 = DBL_MAX,r2,a,b,aux;
   cin >> r1cant;
   for(int i = 0; i < r1cant; i++){
      cin >> aux;
      if(aux>r1)
         r1=aux;
   }
   cin >> p1cant;
   for(int i = 0; i < p1cant; i++){
      cin >> aux;
      if(aux>p1)
         p1=aux;
   }
   cin >> p2cant;
   for(int i = 0; i < p2cant; i++){
      cin >> aux;
      if(aux<p2)
         p2=aux;
   }
   cin >> a >> b;
   printf("%lf", sqrt((r1*r1*b*p1)/(a*p2+b*p1)));
   return 0;
}


#include <stdio.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <climits>
#include <cmath>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#ifndef ONLINE_JUDGE
#define debug(...) cerr << '[' << #__VA_ARGS__ << "]:", _debug(__VA_ARGS__)
#else
#define debug(...) 0
#endif

string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> t) {
  return "(" + to_string(get<0>(t)) + ", " + to_string(get<1>(t)) + ", " +
         to_string(get<2>(t)) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += '}';
  return res;
}

void _debug() { cerr << '\n'; }
template <typename Head, typename... Tail>
void _debug(Head H, Tail... T) {
  cerr << ' ' << to_string(H);
  _debug(T...);
}

#define eb emplace_back

using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vii = vector<ii>;
using vc = vector<char>;
using vb = vector<bool>;
using vll = vector<ll>;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(9);

#ifndef ONLINE_JUDGE
  freopen("./input.txt", "r", stdin);
  freopen("./output.txt", "w", stdout);
#endif

  int n, m, k, a, b;
  cin >> n;
  vi r1(n);
  for (auto &x : r1) cin >> x;
  cin >> m;
  vi p1(m);
  for (auto &x : p1) cin >> x;
  cin >> k;
  vi p2(k);
  for (auto &x : p2) cin >> x;
  cin >> a >> b;

  sort(r1.rbegin(), r1.rend());
  sort(p2.begin(), p2.end());

  ld r1sq = (ld)r1.front() * r1.front();
  ld p2frac = (ld)p2.front() * a / b;
  ld ans = 0;
  for (int i = 0; i < m; ++i) {
    ans = max(ans, r1sq * p1[i] / (p1[i] + p2frac));
  }
  cout << sqrtl(ans);
}


#include <stdio.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <climits>
#include <cmath>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#ifndef ONLINE_JUDGE
#define debug(...) cerr << '[' << #__VA_ARGS__ << "]:", _debug(__VA_ARGS__)
#else
#define debug(...) 0
#endif

string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> t) {
  return "(" + to_string(get<0>(t)) + ", " + to_string(get<1>(t)) + ", " +
         to_string(get<2>(t)) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += '}';
  return res;
}

void _debug() { cerr << '\n'; }
template <typename Head, typename... Tail>
void _debug(Head H, Tail... T) {
  cerr << ' ' << to_string(H);
  _debug(T...);
}

#define eb emplace_back

using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vii = vector<ii>;
using vc = vector<char>;
using vb = vector<bool>;
using vll = vector<ll>;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(9);

#ifndef ONLINE_JUDGE
  freopen("./input.txt", "r", stdin);
  freopen("./output.txt", "w", stdout);
#endif

  int n, m, k, a, b;
  cin >> n;
  vi r1(n);
  for (auto &x : r1) cin >> x;
  cin >> m;
  vi p1(m);
  for (auto &x : p1) cin >> x;
  cin >> k;
  vi p2(k);
  for (auto &x : p2) cin >> x;
  cin >> a >> b;

  sort(r1.rbegin(), r1.rend());
  sort(p2.begin(), p2.end());
  sort(p1.rbegin(), p1.rend());

  ld r1sq = (ld)r1.front() * r1.front();
  ld p2frac = (ld)p2.front() * a / b;
  ld ans = r1sq * p1.front() / (p1.front() + p2frac);
  cout << sqrtl(ans);
}


#include <stdio.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <climits>
#include <cmath>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#ifndef ONLINE_JUDGE
#define debug(...) cerr << '[' << #__VA_ARGS__ << "]:", _debug(__VA_ARGS__)
#else
#define debug(...) 0
#endif

string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> t) {
  return "(" + to_string(get<0>(t)) + ", " + to_string(get<1>(t)) + ", " +
         to_string(get<2>(t)) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += '}';
  return res;
}

void _debug() { cerr << '\n'; }
template <typename Head, typename... Tail>
void _debug(Head H, Tail... T) {
  cerr << ' ' << to_string(H);
  _debug(T...);
}

#define eb emplace_back

using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vii = vector<ii>;
using vc = vector<char>;
using vb = vector<bool>;
using vll = vector<ll>;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(9);

#ifndef ONLINE_JUDGE
  freopen("./input.txt", "r", stdin);
  freopen("./output.txt", "w", stdout);
#endif

  int n, m, k, a, b;
  cin >> n;
  vi r1(n);
  for (auto &x : r1) cin >> x;
  cin >> m;
  vi p1(m);
  for (auto &x : p1) cin >> x;
  cin >> k;
  vi p2(k);
  for (auto &x : p2) cin >> x;
  cin >> a >> b;

  nth_element(r1.rbegin(), r1.rbegin(), r1.rend());
  nth_element(p2.begin(), p2.end() - 1, p2.end());
  nth_element(p1.rbegin(), p1.rbegin(), p1.rend());

  ld r1sq = (ld)r1.front() * r1.front();
  ld p2frac = (ld)p2.front() * a / b;
  ld ans = r1sq * p1.front() / (p1.front() + p2frac);
  cout << sqrtl(ans);
}


#include <stdio.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <climits>
#include <cmath>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#ifndef ONLINE_JUDGE
#define debug(...) cerr << '[' << #__VA_ARGS__ << "]:", _debug(__VA_ARGS__)
#else
#define debug(...) 0
#endif

string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> t) {
  return "(" + to_string(get<0>(t)) + ", " + to_string(get<1>(t)) + ", " +
         to_string(get<2>(t)) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += '}';
  return res;
}

void _debug() { cerr << '\n'; }
template <typename Head, typename... Tail>
void _debug(Head H, Tail... T) {
  cerr << ' ' << to_string(H);
  _debug(T...);
}

#define eb emplace_back

using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vii = vector<ii>;
using vc = vector<char>;
using vb = vector<bool>;
using vll = vector<ll>;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(9);

#ifndef ONLINE_JUDGE
  freopen("./input.txt", "r", stdin);
  freopen("./output.txt", "w", stdout);
#endif

  int n, m, k, a, b;
  cin >> n;
  vi r1(n);
  for (auto &x : r1) cin >> x;
  cin >> m;
  vi p1(m);
  for (auto &x : p1) cin >> x;
  cin >> k;
  vi p2(k);
  for (auto &x : p2) cin >> x;
  cin >> a >> b;

  nth_element(r1.rbegin(), r1.rbegin(), r1.rend());
  nth_element(p2.begin(), p2.begin(), p2.end());
  nth_element(p1.rbegin(), p1.rbegin(), p1.rend());

  ld r1sq = (ld)r1.front() * r1.front();
  ld p2frac = (ld)p2.front() * a / b;
  ld ans = r1sq * p1.front() / (p1.front() + p2frac);
  cout << sqrtl(ans);
}


#include <stdio.h>

#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <climits>
#include <cmath>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

#ifndef ONLINE_JUDGE
#define debug(...) cerr << '[' << #__VA_ARGS__ << "]:", _debug(__VA_ARGS__)
#else
#define debug(...) 0
#endif

string to_string(string s) { return '"' + s + '"'; }
string to_string(const char *s) { return to_string((string)s); }
string to_string(bool b) { return (b ? "true" : "false"); }
template <typename A, typename B>
string to_string(pair<A, B> p) {
  return "(" + to_string(p.first) + ", " + to_string(p.second) + ")";
}
template <typename A, typename B, typename C>
string to_string(tuple<A, B, C> t) {
  return "(" + to_string(get<0>(t)) + ", " + to_string(get<1>(t)) + ", " +
         to_string(get<2>(t)) + ")";
}
template <typename A>
string to_string(A v) {
  bool first = true;
  string res = "{";
  for (const auto &x : v) {
    if (!first) {
      res += ", ";
    }
    first = false;
    res += to_string(x);
  }
  res += '}';
  return res;
}

void _debug() { cerr << '\n'; }
template <typename Head, typename... Tail>
void _debug(Head H, Tail... T) {
  cerr << ' ' << to_string(H);
  _debug(T...);
}

#define eb emplace_back

using ll = long long;
using ld = long double;
using ii = pair<int, int>;
using vi = vector<int>;
using vii = vector<ii>;
using vc = vector<char>;
using vb = vector<bool>;
using vll = vector<ll>;

int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(9);

#ifndef ONLINE_JUDGE
  freopen("./input.txt", "r", stdin);
  freopen("./output.txt", "w", stdout);
#endif

  int n, m, k, a, b;
  cin >> n;
  vi r1(n);
  for (auto &x : r1) cin >> x;
  cin >> m;
  vi p1(m);
  for (auto &x : p1) cin >> x;
  cin >> k;
  vi p2(k);
  for (auto &x : p2) cin >> x;
  cin >> a >> b;

  nth_element(r1.begin(), r1.end() - 1, r1.end());
  nth_element(p2.begin(), p2.begin(), p2.end());
  nth_element(p1.begin(), p1.end() - 1, p1.end());

  ld r1sq = (ld)r1.back() * r1.back();
  ld p2frac = (ld)p2.front() * a / b;
  ld ans = r1sq * p1.back() / (p1.back() + p2frac);
  cout << sqrtl(ans);
}


#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double ans;
    double n, m, k, b, a;
    cin >> n;
    vector <int> r1(n);
    for (int i = 0; i < n; i++)
        cin >> r1[i];
    cin >> m;
    vector <int> p1(m);
    for (int i = 0; i < m; i++)
        cin >> p1[i];
    cin >> k;
    vector <int> p2(k);
    for (int i = 0; i < k; i++)
        cin >> p2[i];
    cin >> a >> b;
    sort (r1.rbegin(), r1.rend());
    sort (p1.rbegin(), p1.rend());
    sort (p2.begin(), p2.end());
    cout << r1[0] << " " << p1[0] << " " << p2[0] << "\n";
    ans = sqrt((pow(r1[0], 2) * ((double)p1[0] / p2[0]) * ((double)b / a)) / (1 + ((double)p1[0] / p2[0]) * (b / a)));
    cout << setprecision (12) << fixed << ans;

    return 0;
}


#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double ans;
    double n, m, k, b, a;
    cin >> n;
    vector <int> r1(n);
    for (int i = 0; i < n; i++)
        cin >> r1[i];
    cin >> m;
    vector <int> p1(m);
    for (int i = 0; i < m; i++)
        cin >> p1[i];
    cin >> k;
    vector <int> p2(k);
    for (int i = 0; i < k; i++)
        cin >> p2[i];
    cin >> a >> b;
    sort (r1.rbegin(), r1.rend());
    sort (p1.rbegin(), p1.rend());
    sort (p2.begin(), p2.end());
    ans = sqrt((pow(r1[0], 2) * ((double)p1[0] / p2[0]) * ((double)b / a)) / (1 + ((double)p1[0] / p2[0]) * (b / a)));
    cout << setprecision (12) << fixed << ans;

    return 0;
}


#include<bits/stdc++.h>
#define pb push_back
#define ll long long
using namespace std;

int main(){
   /*
     _   _
    (.) (.)
       ^
      &$%

   */

   int n,m,z;
   cin>>n;double r1[n];
   for(int i=0;i<n;i++)cin>>r1[i];

   cin>>m;double p1[m];
   for(int i=0;i<m;i++)cin>>p1[i];

   cin>>z;double p2[z];
   for(int i=0;i<z;i++)cin>>p2[i];

   int a,b;
   cin>>a>>b;

   sort(r1,r1+n);
   sort(p1,p1+m);
   sort(p2,p2+z);

   double r2 =(double)(b*p1[m-1]*r1[n-1]*r1[n-1])/(double)(a*p2[0]+b*p1[m-1]);
   cout<<fixed<<setprecision(12)<<(double)sqrt(r2);

return 0;
}


#include <bits/stdc++.h>
#define all(v) v.begin(),v.end()
#define ll  long long
#define pb  push_back
#define mkp make_pair
using namespace std;
const int MAX_N =5e5+5;
double arr[MAX_N];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL), cout.tie(NULL);
    int n,m,k,A,B;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>arr[i];
    }sort(arr,arr+n);
    double r1 =arr[n-1];
    cin>>m;
    for(int i=0;i<m;i++){
        cin>>arr[i];
    }sort(arr,arr+m);
    double p1 =arr[m-1];
    cin>>k;
    for(int i=0;i<k;i++){
        cin>>arr[i];
    }sort(arr,arr+k);
    double p2 =arr[0];
    cin>>A>>B;
     double ans=((double)B*p1*r1*r1)/((double)A*p2+B*p1);
    cout<<fixed<<setprecision(12)<<sqrt(ans);
return 0;
}


#include<bits/stdc++.h>
#define pb push_back
#define ll long long
using namespace std;

int main(){
   /*
     _   _
    (.) (.)
       ^
      &$%

   */

   int n,m,z;
   cin>>n;
   int r1[n];
   for(int i=0;i<n;i++)cin>>r1[i];
   cin>>m;int p1[m];
   for(int i=0;i<m;i++)cin>>p1[i];
   cin>>z;int p2[z];
   for(int i=0;i<z;i++)cin>>p2[i];
   int a,b;
   cin>>a>>b;
   sort(r1,r1+n);
   sort(p1,p1+m);
   sort(p2,p2+z);

   double r2 =(double)(b*p1[m-1]*r1[n-1]*r1[n-1])/(double)(a*p2[0]+b*p1[m-1]);
   cout<<fixed<<setprecision(12)<<(double)sqrt(r2);

return 0;
}


#include<bits/stdc++.h>
#define pb push_back
#define ll long long
using namespace std;

int main(){
   /*
     _   _
    (.) (.)
       ^
      &$%

   */

   int n,m,z;
   cin>>n;
   int r1[n];
   for(int i=0;i<n;i++)cin>>r1[i];
   cin>>m;int p1[m];
   for(int i=0;i<m;i++)cin>>p1[i];
   cin>>z;int p2[z];
   for(int i=0;i<z;i++)cin>>p2[i];
   int a,b;
   cin>>a>>b;
   sort(r1,r1+n);
   reverse(r1,r1+n);
   sort(p1,p1+m);
   reverse(p1,p1+m);
   sort(p2,p2+z);

   double r2 =(double)(b*p1[0]*r1[0]*r1[0])/(double)(a*p2[0]+b*p1[0]);
   cout<<fixed<<setprecision(12)<<(double)sqrt(r2);

return 0;
}


#include<bits/stdc++.h>
using namespace std;
void Solve(int r1,int p1,int p2,int A,int B)
{
	double r2 = r1*r1*B*p1;;

	r2 = r2/double(A*p2 +B*p1);

	cout<<fixed<<setprecision(12)<<sqrt(r2);
}
int main(int argc, char const *argv[])
{
	int n;
	cin>>n;

	vector<int> x(n);
	for(int i=0;i<n;i++)
		cin>>x[i];

	int m;
	cin>>m;

	vector<int> y(m);
	for(int i=0;i<m;i++)
		cin>>y[i];

	int k;
	cin>>k;

	vector<int> z(k);
	for(int i=0;i<k;i++)
		cin>>z[i];

	int A,B;
	cin>>A>>B;

	int r1 = *max_element(x.begin(),x.end());
	int p1 = *max_element(y.begin(),y.end());
	int p2 = *min_element(z.begin(),z.end());

	Solve(r1,p1,p2,A,B);

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
void Solve(int r1,int p1,int p2,int A,int B)
{
	double r2 = r1*r1*B*p1;;

	r2 = r2/double(A*p2 +B*p1);

	cout<<fixed<<setprecision(12)<<sqrt(r2);
}
int main(int argc, char const *argv[])
{

	int r1 = 0;
	int p1 = 0;
	int p2 = 5001;

	int n;
	cin>>n;

	for(int i=0;i<n;i++)
	{
		int in;
		cin>>in;
		if(in>r1)
			r1 = in;
	}

	int m;
	cin>>m;

	for(int i=0;i<m;i++)
	{
		int in;
		cin>>in;
		if(in>p1)
			p1 = in;
	}

	int k;
	cin>>k;

	for(int i=0;i<k;i++)
	{
		int in;
		cin>>in;
		if(in<p2)
			p2 = in;
	}

	int A,B;
	cin>>A>>B;

	Solve(r1,p1,p2,A,B);

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
void Solve(int r1,int p1,int p2,int A,int B)
{
	double r2 = r1*sqrt(B*p1);

	r2 = r2/sqrt(double(A*p2 + B*p1));

	cout<<fixed<<setprecision(12)<<r2;
}
int main(int argc, char const *argv[])
{

	int r1 = 0;
	int p1 = 0;
	int p2 = 5001;

	int n;
	cin>>n;

	for(int i=0;i<n;i++)
	{
		int in;
		cin>>in;
		if(in>r1)
			r1 = in;
	}

	int m;
	cin>>m;

	for(int i=0;i<m;i++)
	{
		int in;
		cin>>in;
		if(in>p1)
			p1 = in;
	}

	int k;
	cin>>k;

	for(int i=0;i<k;i++)
	{
		int in;
		cin>>in;
		if(in<p2)
			p2 = in;
	}

	int A,B;
	cin>>A>>B;

	Solve(r1,p1,p2,A,B);

	return 0;
}


#include<bits/stdc++.h>
using namespace std;
void Solve(int r1,int p1,int p2,int A,int B)
{
	float r2 = r1*r1*B*p1;;

	r2 = r2/float(A*p2 +B*p1);

	cout<<fixed<<setprecision(7)<<sqrt(r2);
}
int main(int argc, char const *argv[])
{
	int n;
	cin>>n;

	vector<int> x(n);
	for(int i=0;i<n;i++)
		cin>>x[i];

	int m;
	cin>>m;

	vector<int> y(m);
	for(int i=0;i<m;i++)
		cin>>y[i];

	int k;
	cin>>k;

	vector<int> z(k);
	for(int i=0;i<k;i++)
		cin>>z[i];

	int A,B;
	cin>>A>>B;

	int r1 = *max_element(x.begin(),x.end());
	int p1 = *max_element(y.begin(),y.end());
	int p2 = *min_element(z.begin(),z.end());

	Solve(r1,p1,p2,A,B);

	return 0;
}


//1.read question_2.read I/O_3.read test cases_4.read constraints(to decide TC of solution)_5.decide method_6.dry run_
//7.code_8.test_9.submit
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli mod=1e9+7;
#define F first
#define double float
#define S second
#define _READ freopen("input.txt","r", stdin);
#define pb push_back
int main()
{
    #ifndef ONLINE_JUDGE
    _READ
    #endif
	lli n;
	cin>>n;
	vector<double> r(n);
	for(auto &i:r)
		cin>>i;
	lli m;
	cin>>m;
	vector<double> p1(m);
	for(auto &i:p1)
		cin>>i;
	lli k;
	cin>>k;
	vector<double> p2(k);
	for(auto &i:p2)
		cin>>i;
	double a,b;
	cin>>a>>b;
	double c=a/b;
	set<double> ratio;
	for(auto i:p1)
		for(auto j:p2)
			ratio.insert(j/i);
	double r1=0;

	//.//for(auto i:r)
		//for(auto j:ratio)
		auto i=*max_element(r.begin(),r.end());
			auto j=*ratio.begin();
			double temp=i/sqrt(c*j+1);
			r1=max(temp,r1);

	cout<<setprecision(20)<<r1;
    return 0;
}
//g++ sumanto.cpp -Wall -Werror -o sumanto
// .\sumanto.cpp


//1.read question_2.read I/O_3.read test cases_4.read constraints(to decide TC of solution)_5.decide method_6.dry run_
//7.code_8.test_9.submit
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli mod=1e9+7;
#define F first
#define double float
#define S second
#define _READ freopen("input.txt","r", stdin);
#define pb push_back
#define _FAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main()
{
    #ifndef ONLINE_JUDGE
    _READ
    #endif
    _FAST
	lli n;
	cin>>n;
	vector<double> r(n);
	for(auto &i:r)
		cin>>i;
	lli m;
	cin>>m;
	vector<double> p1(m);
	for(auto &i:p1)
		cin>>i;
	lli k;
	cin>>k;
	vector<double> p2(k);
	for(auto &i:p2)
		cin>>i;
	double a,b;
	cin>>a>>b;
	double c=a/b;
	vector<double> ratio;
	for(auto i:p1)
		for(auto j:p2)
			ratio.push_back(j/i);
	double r1=0;
	for(auto i:r)
		for(auto j:ratio)
		{
			double temp=i/sqrt(c*j+1);
			r1=max(temp,r1);
		}
	cout<<setprecision(20)<<r1;
    return 0;
}
//g++ sumanto.cpp -Wall -Werror -o sumanto
// .\sumanto.cpp


//1.read question_2.read I/O_3.read test cases_4.read constraints(to decide TC of solution)_5.decide method_6.dry run_
//7.code_8.test_9.submit
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli mod=1e9+7;
#define F first
#define double float
#define S second
#define _READ freopen("input.txt","r", stdin);
#define pb push_back
#define _FAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main()
{
    #ifndef ONLINE_JUDGE
    _READ
    #endif
    _FAST
	lli n;
	cin>>n;
	vector<double> r(n);
	for(auto &i:r)
		cin>>i;
	lli m;
	cin>>m;
	vector<double> p1(m);
	for(auto &i:p1)
		cin>>i;
	lli k;
	cin>>k;
	vector<double> p2(k);
	for(auto &i:p2)
		cin>>i;
	double a,b;
	cin>>a>>b;
	double c=a/b;
	set<double> ratio;
	for(auto i:p1)
		for(auto j:p2)
			ratio.insert(j/i);
	double r1=0;
	for(auto i:r)
		for(auto j:ratio)
		{
			double temp=i/sqrt(c*j+1);
			r1=max(temp,r1);
		}
	cout<<setprecision(20)<<r1;
    return 0;
}
//g++ sumanto.cpp -Wall -Werror -o sumanto
// .\sumanto.cpp


//1.read question_2.read I/O_3.read test cases_4.read constraints(to decide TC of solution)_5.decide method_6.dry run_
//7.code_8.test_9.submit
#include<bits/stdc++.h>
using namespace std;
typedef long long int lli;
const lli mod=1e9+7;
#define F first
#define double float
#define S second
#define _READ freopen("input.txt","r", stdin);
#define pb push_back
int main()
{
    #ifndef ONLINE_JUDGE
    _READ
    #endif
	lli n;
	cin>>n;
	vector<double> r(n);
	for(auto &i:r)
		cin>>i;
	lli m;
	cin>>m;
	vector<double> p1(m);
	for(auto &i:p1)
		cin>>i;
	lli k;
	cin>>k;
	vector<double> p2(k);
	for(auto &i:p2)
		cin>>i;
	double a,b;
	cin>>a>>b;
	double c=a/b;
	//const double=-1;
	double ratio=1e8;
	for(auto i:p1)
		for(auto j:p2)
			ratio=min(ratio,j/i);
	double r1=0;

	//.//for(auto i:r)
		//for(auto j:ratio)
		auto i=*max_element(r.begin(),r.end());
			//auto j=*ratio.begin();
			double temp=i/sqrt(c*ratio+1);
			r1=max(temp,r1);

	cout<<setprecision(20)<<r1;
    return 0;
}
//g++ sumanto.cpp -Wall -Werror -o sumanto
// .\sumanto.cpp


#include<bits/stdc++.h>
using namespace std;

int main(){

    float r1, r2, p1, p2;
    int size, a, b;

    for(int times=0;times<3;times++){
        cin>>size;
        float arr[size];
        for(int i=0;i<size;i++){
            cin>>arr[i];
        }
        sort(arr, arr+size);
        if(times==0)
            r1=arr[size-1];
        else if(times==1)
            p1=arr[size-1];
        else if(times==2)
            p2=arr[0];
    }

    cin>>a>>b;

    float num = b*p1;
    float den = (b*p1)+(a*p2);

    r2 = r1*(sqrt(num/den));

    cout<<r2;

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

int main(){

    double r1, r2, p1, p2;
    int size, a, b;

    for(int times=0;times<3;times++){
        cin>>size;
        double arr[size];
        for(int i=0;i<size;i++){
            cin>>arr[i];
        }
        sort(arr, arr+size);
        if(times==0)
            r1=arr[size-1];
        else if(times==1)
            p1=arr[size-1];
        else if(times==2)
            p2=arr[0];
    }

    cin>>a>>b;

    double num = b*p1;
    double den = (b*p1)+(a*p2);

    r2 = r1*(sqrt(num/den));

    cout<<fixed<<setprecision(12)<<r2;

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

int main(){

    double r1, r2, p1, p2;
    int size, a, b;

    for(int times=0;times<3;times++){
        cin>>size;
        double arr[size];
        for(int i=0;i<size;i++){
            cin>>arr[i];
        }
        sort(arr, arr+size);
        if(times==0)
            r1=arr[size-1];
        else if(times==1)
            p1=arr[size-1];
        else if(times==2)
            p2=arr[0];
    }

    cin>>a>>b;

    double num = b*p1;
    double den = (b*p1)+(a*p2);

    r2 = r1*(sqrt(num/den));

    cout<<r2;

    return 0;
}


#include<bits/stdc++.h>
using namespace std;

int main(){

    long long float r1, r2, p1, p2;
    int size, a, b;

    for(int times=0;times<3;times++){
        cin>>size;
        long long float arr[size];
        for(int i=0;i<size;i++){
            cin>>arr[i];
        }
        sort(arr, arr+size);
        if(times==0)
            r1=arr[size-1];
        else if(times==1)
            p1=arr[size-1];
        else if(times==2)
            p2=arr[0];
    }

    cin>>a>>b;

    long long float num = b*p1;
    long long float den = (b*p1)+(a*p2);

    r2 = r1*(sqrt(num/den));

    cout<<r2;

    return 0;
}


#include<bits/stdc++.h>

using namespace std;
int v[1004];
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);

    int n, m, k, A, B, r1, p1, p2, x;
    r1 = p1 = 0;
    p2 = 1e5;
    cin>>n;
    while(n--){cin>>x;r1 = max(r1, x);}

    cin>>m;
    while(m--){cin>>x;p1 = max(p1, x);}

    cin>>k;
    while(k--){cin>>x;p2 = min(p2, x);}

    cin>>A>>B;

    cout<<setprecision(12) << r1 * sqrt(1.0*p1*B/(p1*B + p2*A));

    return 0;
}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			if(ch=='*') {cnt++,x[i]++; y[j]++;}
		}

		if(cnt==0) {cout << "YES" << endl << 1 << " " << 1; return 0;}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if(x[i]+y[j]>=cnt) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;
}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			if(ch=='*') {cnt++,x[i]++; y[j]++;}
		}

		if(cnt==0) {cout << "YES" << endl << 1 << " " << 1; return 0;}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if(x[i]+y[j]==cnt+1) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;
}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);
vector < vector < int > > v(1001,vector <int> (1001,0));

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			if(ch=='*') {v[i][j] = 1;cnt++,x[i]++; y[j]++;}
		}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if((x[i]-v[i][j]==0 && y[j]==cnt) || (x[i]==cnt && y[j]-v[i][j]==0)) {cout << "YES" << endl << i << " " << j; return 0;}
			if(x[i]+y[j]-v[i][j]==cnt) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;

}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);
vector < vector < char > > v(1001,vector <char> (1001));

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			v[i][j] = ch;
			if(ch=='*') {cnt++,x[i]++; y[j]++;}
		}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if(x[i]+y[j]>cnt || (x[i]+y[i]==cnt && v[i][j]!='*')) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;

}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			if(ch=='*') {cnt++,x[i]++; y[j]++;}
		}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if(x[i]+y[j]>cnt || (x[i]==0 && y[j]==cnt) || (x[i]==cnt && y[j]==0)) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;

}


#include <bits/stdc++.h>
#define INF 999999999
using namespace std;

int n, m, cnt;
char ch;

vector < int > x(1001,0);
vector < int > y(1001,0);

int main(){

	cin >> n >> m;

	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
		{
			cin >> ch;
			if(ch=='*') {cnt++,x[i]++; y[j]++;}
		}

		for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++){

			if(x[i]+y[j]==cnt+1) {cout << "YES" << endl << i << " " << j; return 0;}
		}

		cout << "NO";

	return 0;

}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;
bool comp(pii a, pii b)
{
    return a.fs<b.fs;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int t, tst = 1;
    int n, m;
    vector<pii>vt;
    sf2(n, m);
    char ch;
    FOR(i, n)
        FOR(j, m){
            sf(" %c",&ch);
            if(ch=='*')vt.pb(pii(i,j));
        }
    if(vt.empty()) {
        pf("YES\n1 1\n");
    }
//    sort(vt.begin(), vt.end(), comp);
    int pos = -1, x = -1;
    FOR(i, vt.size()-1)
    {
        for(int j = i+1; j<vt.size(); j++){
            if(vt[i].fs==vt[j].fs){
                x = vt[i].fs;
                break;
            }
        }
    }
    int flag = 0, y = -1;

    for(int i = 0; i<vt.size() ; i++)
        if(vt[i].fs!=x){
                if(y==-1) y = vt[i].sc;
                else if(y!=vt[i].sc){
                    flag = 1;
                    break;
                }
        }

    if(!flag){
        if(x==-1) x = 0;
        if(y==-1) y = 0;
        pf("YES\n%d %d\n",x+1, y+1);
    }
    else pf("NO\n");
    return 0;
}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;
bool comp(pii a, pii b)
{
    return a.fs<b.fs;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int t, tst = 1;
    int n, m;
    vector<pii>vt;
    sf2(n, m);
    char ch;
    FOR(i, n)
        FOR(j, m){
            sf(" %c",&ch);
            if(ch=='*')vt.pb(pii(i,j));
        }
    if(vt.empty()) {
        pf("YES\n1 1\n");
        return 0;
    }
//    sort(vt.begin(), vt.end(), comp);
    int pos = -1, x = -1;
    FOR(i, vt.size()-1)
    {
        for(int j = i+1; j<vt.size(); j++){
            if(vt[i].fs==vt[j].fs){
                x = vt[i].fs;
                break;
            }
        }
    }
    int flag = 0, y = -1;
    if(x==-1) x = vt[0].fs;
    for(int i = 0; i<vt.size() ; i++)
        if(vt[i].fs!=x){
                if(y==-1) y = vt[i].sc;
                else if(y!=vt[i].sc){
                    flag = 1;
                    break;
                }
        }

    if(!flag){
        if(x==-1) x = 0;
        if(y==-1) y = 0;
        pf("YES\n%d %d\n",x+1, y+1);
    }
    else{
        if(vt.size()==2)pf("YES\n%d %d\n",vt[0].fs+1, vt[1].sc+1);
        else pf("NO\n");
    }
    return 0;
}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;

int main()
{
    int n, m;
    char ch;
    vector<pii>vt;
    sf2(n, m);
    FOR(i, n)
    FOR(j, m)
    {
        cin >> ch;
        if(ch=='*') vt.pb(pii(i, j));
    }
    if(vt.empty()){
        pf("YES\n1 1\n");
        return 0;
    }
    int l = vt.size();
    if(l==2) {
        pf("YES\n%d %d\n",vt[0].fs, vt[1].sc);
        return 0;
    }
    int x = -1, y = -1;
    FOR(i, l)
    {
        for(int j = i+1; j<l; j++)
        {
            if(vt[i].fs==vt[j].fs)
            {
                x = vt[i].fs;
                break;
            }
        }
    }
    if(x==-1)
    {
        int a = -1, b = -1;
        FOR(i, l)
            for(int j = i+1; j<l; j++)
            {
                if(vt[i].sc!=vt[j].sc){
                    a = i;
                    b = j;
                    break;
                }
            }
        if(a!=-1){
            FOR(i, l){
                if(i!=a && vt[i].sc==vt[a].sc){
                    x = b;
                    break;
                }
                if(i!=b && vt[i].sc==vt[b].sc){
                    x = a;
                    break;
                }
            }

        }
    }
    if(x==-1) x = 0;
    int flag = 0;
    FOR(i, l)
    {
        if(x!=vt[i].fs)
        {
            if(y==-1) y = vt[i].sc;
            else if(y!=vt[i].sc)
            {
                flag = 1;
                break;
            }
        }
    }
    if(y==-1) y = 0;
    if(!flag) pf("YES\n%d %d\n",x+1,y+1);
    else pf("NO\n");
    return 0;
}

/*

5 5
. . * . .
. . * . .
* . . . .
. . * . .
. . * . .

*/


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;

int main()
{
    int n, m;
    char ch;
    vector<pii>vt;
    sf2(n, m);
    FOR(i, n)
    FOR(j, m)
    {
        cin >> ch;
        if(ch=='*') vt.pb(pii(i, j));
    }
    if(vt.empty()){
        pf("YES\n1 1\n");
        return 0;
    }
    int l = vt.size();
    int x = -1, y = -1;
    FOR(i, l)
    {
        for(int j = i+1; j<l; j++)
        {
            if(vt[i].fs==vt[j].fs)
            {
                x = vt[i].fs;
                break;
            }
        }
    }
    if(x==-1)
    {
        int a = -1, b = -1;
        FOR(i, l)
            for(int j = i+1; j<l; j++)
            {
                if(vt[i].sc!=vt[j].sc){
                    a = i;
                    b = j;
                    break;
                }
            }
        if(a!=-1){
            FOR(i, l){
                if(i!=a && vt[i].sc==vt[a].sc){
                    x = b;
                    break;
                }
                if(i!=b && vt[i].sc==vt[b].sc){
                    x = a;
                    break;
                }
            }

        }
    }
    if(x==-1) x = 0;
    int flag = 0;
    FOR(i, l)
    {
        if(x!=vt[i].fs)
        {
            if(y==-1) y = vt[i].sc;
            else if(y!=vt[i].sc)
            {
                flag = 1;
                break;
            }
        }
    }
    if(!flag) pf("YES\n%d %d\n",x+1,y+1);
    else pf("NO\n");
    return 0;
}

/*

5 5
. . * . .
. . * . .
* . . . .
. . * . .
. . * . .

*/


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;

int main()
{
    int n, m;
    char ch;
    vector<pii>vt;
    sf2(n, m);
    FOR(i, n)
    FOR(j, m)
    {
        cin >> ch;
        if(ch=='*') vt.pb(pii(i, j));
    }
    if(vt.empty()){
        pf("YES\n1 1\n");
        return 0;
    }
    int l = vt.size();
    if(l==2) {
        pf("YES\n%d %d\n",vt[0].fs+1, vt[1].sc+1);
        return 0;
    }
    int x = -1, y = -1;
    FOR(i, l)
    {
        for(int j = i+1; j<l; j++)
        {
            if(vt[i].fs==vt[j].fs)
            {
                x = vt[i].fs;
                break;
            }
        }
    }
    if(x==-1)
    {
        int a = -1, b = -1;
        FOR(i, l)
            for(int j = i+1; j<l; j++)
            {
                if(vt[i].sc!=vt[j].sc){
                    a = i;
                    b = j;
                    break;
                }
            }
        if(a!=-1){
            FOR(i, l){
                if(i!=a && vt[i].sc==vt[a].sc){
                    x = b;
                    break;
                }
                if(i!=b && vt[i].sc==vt[b].sc){
                    x = a;
                    break;
                }
            }

        }
    }
    if(x==-1) x = 0;
    int flag = 0;
    FOR(i, l)
    {
        if(x!=vt[i].fs)
        {
            if(y==-1) y = vt[i].sc;
            else if(y!=vt[i].sc)
            {
                flag = 1;
                break;
            }
        }
    }
    if(y==-1) y = 0;
    if(!flag) pf("YES\n%d %d\n",x+1,y+1);
    else pf("NO\n");
    return 0;
}

/*

5 5
. . * . .
. . * . .
* . . . .
. . * . .
. . * . .

*/


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;
bool comp(pii a, pii b)
{
    return a.fs<b.fs;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int t, tst = 1;
    int n, m;
    vector<pii>vt;
    sf2(n, m);
    char ch;
    FOR(i, n)
        FOR(j, m){
            sf(" %c",&ch);
            if(ch=='*')vt.pb(pii(i,j));
        }
    if(vt.empty()) {
        pf("YES\n1 1\n");
    }
//    sort(vt.begin(), vt.end(), comp);
    int pos = -1, x = -1;
    FOR(i, vt.size()-1)
    {
        for(int j = i+1; j<vt.size(); j++){
            if(vt[i].fs==vt[j].fs){
                x = vt[i].fs;
                break;
            }
        }
    }
    int flag = 0, y = -1;

    for(int i = 0; i<vt.size() ; i++)
        if(vt[i].fs!=x){
                if(y==-1) y = vt[i].sc;
                else if(y!=vt[i].sc){
                    flag = 1;
                    break;
                }
        }

    if(!flag){
        if(x==-1) x = 0;
        pf("YES\n%d %d\n",x+1, y+1);
    }
    else pf("NO\n");
    return 0;
}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;
bool comp(pii a, pii b)
{
    return a.fs<b.fs;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int t, tst = 1;
    int n, m;
    vector<pii>vt;
    sf2(n, m);
    char ch;
    FOR(i, n)
        FOR(j, m){
            sf(" %c",&ch);
            if(ch=='*')vt.pb(pii(i,j));
        }
    if(vt.empty()) {
        pf("YES\n1 1\n");
        return 0;
    }
//    sort(vt.begin(), vt.end(), comp);
    int pos = -1, x = -1;
    FOR(i, vt.size()-1)
    {
        for(int j = i+1; j<vt.size(); j++){
            if(vt[i].fs==vt[j].fs){
                x = vt[i].fs;
                break;
            }
        }
    }
    int flag = 0, y = -1;

    for(int i = 0; i<vt.size() ; i++)
        if(vt[i].fs!=x){
                if(y==-1) y = vt[i].sc;
                else if(y!=vt[i].sc){
                    flag = 1;
                    break;
                }
        }

    if(!flag){
        if(x==-1) x = 0;
        if(y==-1) y = 0;
        pf("YES\n%d %d\n",x+1, y+1);
    }
    else pf("NO\n");
    return 0;
}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;
bool comp(pii a, pii b)
{
    return a.fs<b.fs;
}

int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int t, tst = 1;
    int n, m;
    vector<pii>vt;
    sf2(n, m);
    char ch;
    FOR(i, n)
        FOR(j, m){
            sf(" %c",&ch);
            if(ch=='*')vt.pb(pii(i,j));
        }
    if(vt.empty()) {
        pf("YES\n1 1\n");
        return 0;
    }
//    sort(vt.begin(), vt.end(), comp);
    int pos = -1, x = -1;
    FOR(i, vt.size()-1)
    {
        for(int j = i+1; j<vt.size(); j++){
            if(vt[i].fs==vt[j].fs){
                x = vt[i].fs;
                break;
            }
        }
    }
    int flag = 0, y = -1;

    for(int i = 0; i<vt.size() ; i++)
        if(vt[i].fs!=x){
                if(y==-1) y = vt[i].sc;
                else if(y!=vt[i].sc){
                    flag = 1;
                    break;
                }
        }

    if(!flag){
        if(x==-1) x = 0;
        if(y==-1) y = 0;
        pf("YES\n%d %d\n",x+1, y+1);
    }
    else{
        if(vt.size()==2)pf("YES\n%d %d\n",vt[0].fs+1, vt[1].sc+1);
        else pf("NO\n");
    }
    return 0;
}


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;

int main()
{
    int n, m;
    sf2(n, m);
    int cnt = 0;
    int row[n];
    int col[m];
    mem(row, 0);
    mem(col, 0);
    char ara[n][m+5];
    FOR(i, n)
        sf("%s",ara[i]);
    FOR(i, n)
        FOR(j, m)
        {
            if(ara[i][j]=='*'){
                row[i]++;
                col[j]++;
                cnt++;
            }
        }

    FOR(i, n)
        FOR(j, m)
        {
            int ext = 0;
            if(ara[i][j]=='*')
                ext = 1;
            if(row[i]+col[j]-ext==cnt)
            {
                pf("YES\n%d %d\n",i+1,j+1);
                return 0;
            }
        }
    pf("NO\n");

    return 0;
}

/*

5 5
. . * . .
. . * . .
* . . . .
. . * . .
. . * . .

*/


#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<climits>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#define pii pair<int,int>
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define ppb pop_back()
#define pf printf
#define pf1(a) printf("%d\n",a);
#define hi printf("hi!\n");
#define sf scanf
#define sf1(a) scanf("%d",&a)
#define sf2(a,b) scanf("%d %d",&a,&b)
#define sf3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define pcase(x) printf("Case %d: ",x)
#define MX 1000000007
#define inf 2147483647
#define mem(arr,x) memset((arr), (x), sizeof((arr)));
#define FOR(i,x) for(int i=0;i<(x); i++)
//#define seti(p,x) p|=(1<<x)
//#define check(p,x) (p & (1<<x))
//#define reseti(p,x) p&=(~(1<<x))

////8 moves
//int fx[]={1,1,1,0,0,-1,-1,-1};
//int fy[]={1,0,-1,1,-1,1,0,-1};
//
////4 moves
//int fx[]= {1,0,0,-1};
//int fy[]= {0,1,-1,0};
//
////night moves
//int fx[]={2,2,-2,-2,1,-1,1,-1};
//int fy[]={1,-1,1,-1,2,2,-2,-2};

using namespace std;
typedef long long int lint;
typedef double dbl;

int main()
{
    int n, m;
    char ch;
    vector<pii>vt;
    sf2(n, m);
    FOR(i, n)
    FOR(j, m)
    {
        cin >> ch;
        if(ch=='*') vt.pb(pii(i, j));
    }
    if(vt.empty()){
        pf("YES\n1 1\n");
        return 0;
    }
    int l = vt.size();
    int x = -1, y = -1;
    FOR(i, l)
    {
        for(int j = i+1; j<l; j++)
        {
            if(vt[i].fs==vt[j].fs)
            {
                x = vt[i].fs;
                break;
            }
        }
    }
    if(x==-1)
    {
        int a = -1, b = -1;
        FOR(i, l)
            for(int j = i+1; j<l; j++)
            {
                if(vt[i].sc!=vt[j].sc){
                    a = i;
                    b = j;
                    break;
                }
            }
        if(a!=-1){
            FOR(i, l){
                if(i!=a && vt[i].sc==vt[a].sc){
                    x = b;
                    break;
                }
                if(i!=b && vt[i].sc==vt[b].sc){
                    x = a;
                    break;
                }
            }

        }
    }
    if(x==-1) x = 0;
    int flag = 0;
    FOR(i, l)
    {
        if(x!=vt[i].fs)
        {
            if(y==-1) y = vt[i].sc;
            else if(y!=vt[i].sc)
            {
                flag = 1;
                break;
            }
        }
    }
    if(y==-1) y = 0;
    if(!flag) pf("YES\n%d %d\n",x+1,y+1);
    else pf("NO\n");
    return 0;
}

/*

5 5
. . * . .
. . * . .
* . . . .
. . * . .
. . * . .

*/


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}
			}
			if (x + y != -2)
				break;
		}

	if (x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0, num1 = 0, num2 = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}

		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = i;
			}

	if (num1 + num2 > 2 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}
				if (total == 1 && col[j] > 0)
				{
					x = i;
					y = j;
					break;
				}
				if (total == 0)
				{
				    x = 0;
				    y = 0;
				    break;
				}

			}
			if (x + y != -2)
				break;
		}

	if (x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1, num1 = 0, num2 = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}

		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = i;
			}

	if (num1 + num2 > 2 || x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0, num1 = 0, num2 = 0, num3 = 0, num4 = 0;
	int cnt1[10000]={0}, cnt2[10000]={0};
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
				cnt1[i+j]++;
				cnt2[1000+i-j]++;
			}
		}
		int status = 1;
		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = i;
			}
		for(int i =0 ;i < 10000; i++)
			if (cnt1[i] > 2)
				status = 0;
			else if (cnt2[i] > 2)
				status = 0;

	if (num1 + num2 > 2 || status == 0 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0, num1 = 0, num2 = 0;
	int cnt1[10000]={0}, cnt2[10000]={0};
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
				cnt1[i+j]++;
				cnt2[1000+i-j]++;
			}
		}
		int status = 1;
		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = i;
			}
		for(int i =0 ;i < 10000; i++)
			if (cnt1[i] > 2)
				status = 0;
			else if (cnt2[1000+i] > 2)
				status = 0;

	if (num1 + num2 > 2 || status == 0 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1, num1 = 0, num2 = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}

		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = j;
			}

	if (num1 + num2 > 2 || x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0, num1 = 0, num2 = 0, num3 = 0, num4 = 0;
	int cnt1[10000]={0}, cnt2[10000]={0};
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
				cnt1[i+j]++;
				cnt2[1000+i-j]++;
			}
		}
		int status = 1;
		for(int i = 0; i < a; i++)
			if (row[i] >1)
			{
				num1++;
				x = i;
			}

		for(int i = 0; i < b; i++)
			if (col[i] >1)
			{
				num2++;
				y = i;
			}
		for(int i =0 ;i < 10000; i++)
			if (cnt1[i] > 2)
				status = 0;
			else if (cnt2[1000+i] > 2)
				status = 0;

	if (num1 + num2 > 2 || status == 0 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;

			}
		}
		int status = 0;
		for(int i = 0; i < a; i++)
			for(int j = 0; j < b; j++)
			{
				if (m[i][j] == '.' && row[i]+col[j] == total)
				{
					x = i;
					y = j;
					status = 1;
					break;
				}
				else if (m[i][j] == '*' && row[i] + col[j] - 1 == total)
				{
					x = i;
					y = j;
					status = 1;
					break;
				}

			}

	if (status == 0 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}
				if (total == 1 && col[j] > 0)
				{
					x = i;
					y = j;
					break;
				}

			}
			if (x + y != -2)
				break;
		}

	if (x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = 0, y = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;

			}
		}
		int status = 0;
		for(int i = 0; i < a; i++)
			for(itn j = 0; j < b; j++)
			{
				if (m[i][j] == '.' && row[i]+col[j] == total)
				{
					x = i;
					y = j;
					status = 1;
					break;
				}
				else if (m[i][j] == '*' && row[i] + col[j] - 1 == total)
				{
					x = i;
					y = j;
					status = 1;
					break;
				}

			}

	if (status == 0 )
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
using namespace std;

bool check(char c)
{
  if ( c == 'A' || c == 'H' ||  c == 'I' || c == 'M' || c == 'm' || c == 'O' || c == 'o' || c == 'T' || c == 'U' || c == 'V' || c == 'v' || c == 'W' || c== 'w' || c == 'x' || c == 'X' || c == 'Y' )
  	return true;
  return false;
}

int main()
{
	string  str;
	cin >> str;
	int len = str.length();

		int status =1 ;
		for(int i = 0; i < len/2; i++)
		{

			if (str[i] == 'b' && str[len-i-1] == 'd')
			{
				continue;
			}

			else if (str[i] == 'd' && str[len-i-1] == 'b')
			{
				continue;
			}

			else if (str[i] == 'p' && str[len-i-1] == 'q')
			{
				continue;
			}

			else if (str[i] == 'q' && str[len-i-1] == 'p')
			{
				continue;
			}

			if ( !check(str[i]) )
			{
				status = 0;
				break;
			}
		    if (str[i] != str[len-i-1])
			{
				status =0;
				break;
			}
		}

		if (len %2 == 1)
			if (! check(str[len/2]))
				status = 0;
		if (status == 1)
			cout << "TAK\n";
		else cout << "NIE\n";
	return 0;

}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1, num1 = 0, num2 = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}

		for(int i = 0; i < a; i++)
			if (row[i] >1)
				num1++;

		for(int i = 0; i < b; i++)
			if (col[i] >1)
				num2++;

		if (num1 + num2 <= 2)
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}

				if (total == 1 && col[j] > 0)
				{
					x = i;
					y = j;
					break;
				}

			}
			if (x + y != -2)
				break;
		}

	if (num1 + num2 > 2 || x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1, num1 = 0, num2 = 0;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}

		for(int i = 0; i < a; i++)
			if (row[i] >1)
				num1++;

		for(int i = 0; i < b; i++)
			if (col[i] >1)
				num2++;

		if (num1 + num2 <= 2)
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}

				if (total == 1 && col[j] > 0)
				{
					x = i;
					y = j;
					break;
				}

			}
			if (x + y != -2)
				break;
		}

	if (num1 + num2 > 2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;
}


#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <cmath>
#include <map>
using namespace std;

int main()
{
	vector<string> m;
	string t;
	int a, b;
	int row[1001]={0}, col[1001]={0};
	cin >> a >> b;
	for(int i = 0; i < a; i++ )
	{
		cin >> t;
		m.push_back(t);
	}

	//row check
	int total = 0, x = -1, y = -1;
	for(int i = 0; i < a; i++)
		for(int j = 0; j < b; j++)
		{
			if(m[i][j] == '*')
			{
				row[i]++;
				col[j]++;
				total++;
			}
		}
		for(int i = 0; i < a; i++)
		{
			for(int j = 0; j < b; j++)
			{

				if (row[i]+col[j] == total+1)
				{
					x = i;
				    y = j;
				    break;
				}
				if (total == 1 && col[j] > 0)
				{
					x = i;
					y = j;
					break;
				}

			}
			if (x + y != -2)
				break;
		}

	if (x + y == -2)
		cout << "NO\n";
	else
		cout << "YES\n"<<x+1 <<" "<< y+1<<endl;

	return 0;


#include <iostream>
#include <string>
#include <vector>
#include <limits>
#include <algorithm>
#include <queue>
#include <array>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n, m;

    cin >> n >> m;

    vector<pair<int, int>> dots;

    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
        {
            char c;
            cin >> c;
            if(c == '*')
                dots.emplace_back(i, j);
        }

    int x, y;
    if(dots.size() < 3)
    {
        if(dots.empty())
            cout << "YES\n1 1";
        else if(dots.size() == 1)
            cout << "YES\n1 " << (dots[0].second + 1);
        else
            cout << "YES\n" << (dots[0].first + 1) << " " << (dots[1].second + 1);
    }
    else
    {
        if(dots[0].first == dots[1].first)
        {
            int i;
            for(i = 1; dots[i].first == dots[i - 1].first && i < dots.size(); ++i);

            if(i != dots.size())
            {
                x = dots[0].first;
                y = dots[i].second;
                for(int j = i; j < dots.size(); ++j)
                    if(dots[j].first != x && dots[j].second != y)
                    {
                        cout << "NO";
                        exit(0);
                    }
                cout << "YES\n" << (x + 1) << " " << (y + 1);
            }
            else
                cout << "YES\n" << (dots[0].first + 1) << " 1";
        }
        else if(dots[0].second == dots[1].second)
        {
            int i;
            for(i = 1; dots[i].second == dots[i - 1].second && i < dots.size(); ++i);

            if(i != dots.size())
            {
                x = dots[i].first;
                y = dots[0].second;
                for(int j = i; j < dots.size(); ++j)
                    if(dots[j].first != x && dots[j].second != y)
                    {
                        cout << "NO";
                        exit(0);
                    }
                cout << "YES\n" << (x + 1) << " " << (y + 1);
            }
            else
                cout << "YES\n" << (dots[0].first + 1) << " 1";
        }
        else
        {
            if(dots[0].first == dots[2].first || dots[1].second == dots[2].second)
            {
                y = dots[1].second;
                x = dots[0].first;
            }
            else if(dots[1].first == dots[2].first || dots[0].second == dots[2].second)
            {
                y = dots[0].second;
                x = dots[1].first;
            }
            else
            {
                cout << "NO";
                exit(0);
            }

            for(int j = 0; j < dots.size(); ++j)
                if(dots[j].first != x && dots[j].second != y)
                {
                    cout << "NO";
                    exit(0);
                }
            cout << "YES\n" << (x + 1) << " " << (y + 1);
        }
    }

    return 0;
}