#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
#include <algorithm>
#include <map>
#include <queue>
#include <utility>
#include <ctime>
#include <string>
#include <set>

using namespace std;

int a[301];
int b[301][40];
int l[301];

int main(){
	int n, k;
	cin >> n;
	for (int i = 0 ; i < n; i++){
		cin >> a[i];
	}
	{
		int j;
		for (j = 0; j < a[0]/9; j++){
			b[0][j] = 9;
		}
		if (a[0]%9){
			b[0][j] = a[0]%9;
			j++;
		}
		l[0] = j-1;
	}
	for (int i = 1; i < n; i++){
		for (int j = 0; j < 40; j++){
			b[i][j] = b[i-1][j];
		}
		if (a[i] > a[i-1]){
			int d = a[i] - a[i-1];
			for (int j = 0; j < 40 && d; j++){
				int c = min(9 - b[i][j], d);
				b[i][j] += c;
				d -= c;
			}
		}
		if (a[i] < a[i-1]){
			int d = a[i-1] - a[i];
			int j = 0;
			for (j = 0; j < 40 && d; j++){
				int c = min(b[i][j], d);
				b[i][j] -= c;
				d -= c;
			}
			if (b[i][j-1] < b[i-1][j-1]){
				b[i][j] = b[i][j-1];
				b[i][j-1] = 0;
			}
		}
	}
	for (int i = 0; i < n; i++){
		bool c = false;
		for (int j = 39; j >= 0; j--){
			if (b[i][j] || c || j == 0){
				cout << b[i][j];
				c = true;
			}
		}
		cout << endl;
	}
	//system("pause");
	return 0;
}


#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
#include <algorithm>
#include <map>
#include <queue>
#include <utility>
#include <ctime>
#include <string>
#include <set>

using namespace std;

int a[301];
int b[301][400];
int l[301];

int main(){
	//freopen("1.txt", "r", stdin); freopen("2.txt", "w", stdout);
	int n;
	cin >> n;
	for (int i = 0 ; i < n; i++){
		cin >> a[i];
	}
	{
		int j;
		for (j = 0; j < a[0]/9; j++){
			b[0][j] = 9;
		}
		if (a[0]%9){
			b[0][j] = a[0]%9;
			j++;
		}
		l[0] = j-1;
	}
	for (int i = 1; i < n; i++){
		for (int j = 0; j < 400; j++){
			b[i][j] = b[i-1][j];
		}
		if (a[i] > a[i-1]){
			int d = a[i] - a[i-1];
			for (int j = 0; j < 400 && d; j++){
				int c = min(9 - b[i][j], d);
				b[i][j] += c;
				d -= c;
			}
		}
		if (a[i] < a[i-1]){
			int d = a[i-1] - a[i];
			int j = 0;
			for (j = 0; j < 400 && d; j++){
				int c = min(b[i][j], d);
				b[i][j] -= c;
				d -= c;
			}
			while (b[i][j] == 9) j++;
			bool cc = false;
			while (!cc){
				for (int k = 0; k < j && !cc; k++){
					if (b[i][k]){
						cc = true;
					}
				}
				if (!cc) j++;
			}
			b[i][j]++;
			int c = -1;
			for (int k = 0; k < j; k++){
				c += b[i][k];
			}
			for (int k = 0; k < j; k++){
				b[i][k] = min(c, 9);
				c -= b[i][k];
			}
		}
		if (a[i] == a[i-1]){
			int j = 0;
			while (b[i][j] == 0) j++;
			b[i][j]--;
			j++;
			while (b[i][j] == 9) j++;
			int c = min(9 - b[i][0], b[i][j-1]);
			b[i][j-1] -= c;
			b[i][0] += c;
			b[i][j]++;
		}
	}
	for (int i = 0; i < n; i++){
		bool c = false;
		for (int j = 399; j >= 0; j--){
			if (b[i][j] || c || j == 0){
				cout << b[i][j];
				c = true;
			}
		}
		cout << endl;
	}
	//system("pause");
	return 0;
}


#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
#include <algorithm>
#include <map>
#include <queue>
#include <utility>
#include <ctime>
#include <string>
#include <set>

using namespace std;

int a[301];
int b[301][400];
int l[301];

int main(){
	//freopen("1.txt", "r", stdin); freopen("2.txt", "w", stdout);
	int n, k;
	cin >> n;
	for (int i = 0 ; i < n; i++){
		cin >> a[i];
	}
	{
		int j;
		for (j = 0; j < a[0]/9; j++){
			b[0][j] = 9;
		}
		if (a[0]%9){
			b[0][j] = a[0]%9;
			j++;
		}
		l[0] = j-1;
	}
	for (int i = 1; i < n; i++){
		for (int j = 0; j < 400; j++){
			b[i][j] = b[i-1][j];
		}
		if (a[i] > a[i-1]){
			int d = a[i] - a[i-1];
			for (int j = 0; j < 400 && d; j++){
				int c = min(9 - b[i][j], d);
				b[i][j] += c;
				d -= c;
			}
		}
		if (a[i] < a[i-1]){
			int d = a[i-1] - a[i];
			int j = 0;
			for (j = 0; j < 400 && d; j++){
				int c = min(b[i][j], d);
				b[i][j] -= c;
				d -= c;
			}
			j = 0;
			while (b[i][j] == 0) j++;
			b[i][j]--;
			j++;
			while (b[i][j] == 9) j++;
			b[i][j]++;
		}
		if (a[i] == a[i-1]){
			int j = 0;
			while (b[i][j] == 0) j++;
			b[i][j]--;
			j++;
			while (b[i][j] == 9) j++;
			int c = min(9 - b[i][0], b[i][j-1]);
			b[i][j-1] -= c;
			b[i][0] += c;
			b[i][j]++;
		}
	}
	for (int i = 0; i < n; i++){
		bool c = false;
		for (int j = 399; j >= 0; j--){
			if (b[i][j] || c || j == 0){
				cout << b[i][j];
				c = true;
			}
		}
		cout << endl;
	}
	//system("pause");
	return 0;
}


#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
#include <algorithm>
#include <map>
#include <queue>
#include <utility>
#include <ctime>
#include <string>
#include <set>

using namespace std;

int a[301];
int b[301][400];
int l[301];

int main(){
	int n, k;
	cin >> n;
	for (int i = 0 ; i < n; i++){
		cin >> a[i];
	}
	{
		int j;
		for (j = 0; j < a[0]/9; j++){
			b[0][j] = 9;
		}
		if (a[0]%9){
			b[0][j] = a[0]%9;
			j++;
		}
		l[0] = j-1;
	}
	for (int i = 1; i < n; i++){
		for (int j = 0; j < 400; j++){
			b[i][j] = b[i-1][j];
		}
		if (a[i] > a[i-1]){
			int d = a[i] - a[i-1];
			for (int j = 0; j < 400 && d; j++){
				int c = min(9 - b[i][j], d);
				b[i][j] += c;
				d -= c;
			}
		}
		if (a[i] < a[i-1]){
			int d = a[i-1] - a[i];
			int j = 0;
			for (j = 0; j < 400 && d; j++){
				int c = min(b[i][j], d);
				b[i][j] -= c;
				d -= c;
			}
			if (b[i][j-1] < b[i-1][j-1]){
				b[i][j] = b[i][j-1];
				b[i][j-1] = 0;
			}
		}
		if (a[i] == a[i-1]){
			int j = 0;
			while (b[i][j] == 0) j++;
			b[i][j]--;
			j++;
			while (b[i][j] == 9) j++;
			b[i][j]++;
		}
	}
	for (int i = 0; i < n; i++){
		bool c = false;
		for (int j = 399; j >= 0; j--){
			if (b[i][j] || c || j == 0){
				cout << b[i][j];
				c = true;
			}
		}
		cout << endl;
	}
	//system("pause");
	return 0;
}


#include <iostream>
#include <vector>

using namespace std;

void printVector(const vector<int>& v)
{
	for (int i = v.size() - 1; i >= 0; i--)
	{
		cout << v[i];
	}
	cout << endl;
}

void makeMinVector(int value, vector<int>& v)
{
	int m = value / 9;
	int r = value % 9;
	v.resize(m + (r != 0));
	for (int i = 0; i < m; i++)
	{
		v[i] = 9;
	}
	if (r != 0)
	{
		v[m] = r;
	}
}

void plusOne(vector<int>& v)
{
	int b = 1;
	for (int i = 0; i < v.size(); i++)
	{
		int a = v[i] + b;
		v[i] = a % 10;
		b = a / 10;
	}
	if (b != 0)
	{
		v.push_back(b);
	}
}

vector<int> makeNextNumber(vector<int> prev, int value)
{
	plusOne(prev);
	/*cout << "prev = ";
	printVector(prev);*/

	if (value / 9 + (value % 9 != 0) > prev.size())
	{
		vector<int> v;
		makeMinVector(value, v);
		return v;
	}

	vector<int> next(prev.size());
	for (int i = prev.size() - 1; i >= 0; i--)
	{
		/*cout << "step = ";
		printVector(next);*/
		if (value > prev[i] || (value == prev[i]))
		{
			next[i] = prev[i];
			value -= prev[i];
		}
		else
		{
			//cout << "here" << endl;

			if (i == prev.size() - 1 && value <= prev.back())
			{

				next.clear();
					next.resize(prev.size() + 1);
					next.back() = 1;
					value -= 1;
					break;
			}

			for (int j = i + 1; j < prev.size(); j++)
			{
				/*cout << "inside step = ";
				printVector(next);*/
				if (next[j] < 9)
				{
					next[j]++;
					value--;
					break;
				}
				else if (j < prev.size() - 1)
				{
					next[j] = 0;
					value += 9;
				}
				else
				{
					value += 9;
					next.clear();
					//cout << "here1" << endl;
					next.resize(prev.size() + 1);
					next.back() = 1;
					value -= 1;
				}
			}
			break;
		}
	}

	for (int i = 0; i < next.size(); i++)
	{
		if (value == 0)
		{
			break;
		}

		if (next[i] < 9)
		{
			int r = 9 - next[i];
			if (r <= value)
			{
				next[i] += r;
				value -= r;
			}
			else
			{
				next[i] += value;
				value = 0;
			}
		}
	}

	return next;
}

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
	}

	vector<int> dinamics[2];

	makeMinVector(v[0], dinamics[0]);

	printVector(dinamics[0]);

	for (int i = 1; i < n; i++)
	{
		//makeMinVector(v[i], dinamics[i % 2]);
		dinamics[i % 2] = makeNextNumber(dinamics[(i - 1) % 2], v[i]);
		printVector(dinamics[i % 2]);
	}

	return 0;
}


#include <iostream>
#include <vector>

using namespace std;

void printVector(const vector<int>& v)
{
	for (int i = v.size() - 1; i >= 0; i--)
	{
		cout << v[i];
	}
	cout << endl;
}

void makeMinVector(int value, vector<int>& v)
{
	int m = value / 9;
	int r = value % 9;
	v.resize(m + (r != 0));
	for (int i = 0; i < m; i++)
	{
		v[i] = 9;
	}
	if (r != 0)
	{
		v[m] = r;
	}
}

void plusOne(vector<int>& v)
{
	int b = 1;
	for (int i = 0; i < v.size(); i++)
	{
		int a = v[i] + b;
		v[i] = a % 10;
		b = a / 10;
	}
	if (b != 0)
	{
		v.push_back(b);
	}
}

vector<int> makeNextNumber(vector<int> prev, int value)
{
	plusOne(prev);
	if (value / 9 + (value % 9 != 0) > prev.size())
	{
		vector<int> v;
		makeMinVector(value, v);
		return v;
	}
	vector<int> next(prev.size());
	for (int i = prev.size() - 1; i >= 0; i--)
	{
		if (value >= prev[i])
		{
			next[i] = prev[i];
			value -= prev[i];
		}
		else
		{
			bool fl = 0;
			for (int j = i + 1; j < prev.size(); j++)
			{
				if (value == 0)
				{
					if (next[j] > 0)
					{
						value = next[j];
						next[j] = 0;
					}
				}
				else if (next[j] < 9)
				{
					next[j]++;
					value--;
					fl = 1;
					break;
				}
				else
				{
					next[j] = 0;
					value += 9;
				}
			}

			if (!fl)
			{
				next.clear();
				next.resize(prev.size() + 1);
				next.back() = 1;
				value -= 1;
			}

			break;
		}
	}

	for (int i = 0; i < next.size(); i++)
	{
		if (value == 0)
		{
			break;
		}

		if (next[i] < 9)
		{
			int r = 9 - next[i];
			if (r <= value)
			{
				next[i] += r;
				value -= r;
			}
			else
			{
				next[i] += value;
				value = 0;
			}
		}
	}

	return next;
}

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
	}

	vector<int> dinamics[2];

	makeMinVector(v[0], dinamics[0]);

	printVector(dinamics[0]);

	for (int i = 1; i < n; i++)
	{
		dinamics[i % 2] = makeNextNumber(dinamics[(i - 1) % 2], v[i]);
		printVector(dinamics[i % 2]);
	}

	return 0;
}


#include <iostream>
#include <vector>

using namespace std;

void printVector(const vector<int>& v)
{
	for (int i = v.size() - 1; i >= 0; i--)
	{
		cout << v[i];
	}
	cout << endl;
}

void makeMinVector(int value, vector<int>& v)
{
	int m = value / 9;
	int r = value % 9;
	v.resize(m + (r != 0));
	for (int i = 0; i < m; i++)
	{
		v[i] = 9;
	}
	if (r != 0)
	{
		v[m] = r;
	}
}

void plusOne(vector<int>& v)
{
	int b = 1;
	for (int i = 0; i < v.size(); i++)
	{
		int a = v[i] + b;
		v[i] = a % 10;
		b = a / 10;
	}
	if (b != 0)
	{
		v.push_back(b);
	}
}

vector<int> makeNextNumber(vector<int> prev, int value)
{
	plusOne(prev);
	/*cout << "prev = ";
	printVector(prev);*/

	if (value / 9 + (value % 9 != 0) > prev.size())
	{
		vector<int> v;
		makeMinVector(value, v);
		return v;
	}

	vector<int> next(prev.size());
	for (int i = prev.size() - 1; i >= 0; i--)
	{
		/*cout << "step = ";
		printVector(next);*/

		if (value >= prev[i])
		{
			next[i] = prev[i];
			value -= prev[i];
		}
		else
		{
			bool fl = 0;
			for (int j = i + 1; j < prev.size(); j++)
			{
				/*cout << "inside step = ";
				printVector(next);*/
				if (value == 0)
				{
					if (next[j] > 0)
					{
						value = next[j];
						next[j] = 0;
					}
				}
				else if (next[j] < 9)
				{
					next[j]++;
					value--;
					fl = 1;
					break;
				}
				else/* if (j < prev.size() - 1)*/
				{
					next[j] = 0;
					value += 9;
				}
				/*else if (j >= prev.size() - 1)
				{
					value += 9;
					next.clear();
					//cout << "here1" << endl;
					next.resize(prev.size() + 1);
					next.back() = 1;
					value -= 1;
				}*/
			}

			if (!fl)
			{
				next.clear();
				//cout << "here1" << endl;
				next.resize(prev.size() + 1);
				next.back() = 1;
				value -= 1;
			}

			break;
		}
	}

	for (int i = 0; i < next.size(); i++)
	{
		if (value == 0)
		{
			break;
		}

		if (next[i] < 9)
		{
			int r = 9 - next[i];
			if (r <= value)
			{
				next[i] += r;
				value -= r;
			}
			else
			{
				next[i] += value;
				value = 0;
			}
		}
	}

	return next;
}

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
	}

	vector<int> dinamics[2];

	makeMinVector(v[0], dinamics[0]);

	printVector(dinamics[0]);

	for (int i = 1; i < n; i++)
	{
		//makeMinVector(v[i], dinamics[i % 2]);
		dinamics[i % 2] = makeNextNumber(dinamics[(i - 1) % 2], v[i]);
		printVector(dinamics[i % 2]);
	}

	return 0;
}


#include <iostream>
#include <vector>

using namespace std;

void printVector(const vector<int>& v)
{
	for (int i = v.size() - 1; i >= 0; i--)
	{
		cout << v[i];
	}
	cout << endl;
}

void makeMinVector(int value, vector<int>& v)
{
	int m = value / 9;
	int r = value % 9;
	v.resize(m + (r != 0));
	for (int i = 0; i < m; i++)
	{
		v[i] = 9;
	}
	if (r != 0)
	{
		v[m] = r;
	}
}

void plusOne(vector<int>& v)
{
	int b = 1;
	for (int i = 0; i < v.size(); i++)
	{
		int a = v[i] + b;
		v[i] = a % 10;
		b = a / 10;
	}
	if (b != 0)
	{
		v.push_back(b);
	}
}

vector<int> makeNextNumber(vector<int> prev, int value)
{
	plusOne(prev);
	/*cout << "prev = ";
	printVector(prev);*/

	if (value / 9 + (value % 9 != 0) > prev.size())
	{
		vector<int> v;
		makeMinVector(value, v);
		return v;
	}

	vector<int> next(prev.size());
	for (int i = prev.size() - 1; i >= 0; i--)
	{
		/*cout << "step = ";
		printVector(next);*/
		if (value > prev[i] || (value == prev[i]))
		{
			next[i] = prev[i];
			value -= prev[i];
		}
		else
		{
			//cout << "here" << endl;

			if (i == prev.size() - 1 && value <= prev.back())
			{
				cout << "size" << prev.size() << endl;
				next.clear();
					next.resize(prev.size() + 1);
					next.back() = 1;
					value -= 1;
					break;
			}

			for (int j = i + 1; j < prev.size(); j++)
			{
				/*cout << "inside step = ";
				printVector(next);*/
				if (next[j] < 9)
				{
					next[j]++;
					value--;
					break;
				}
				else if (j < prev.size() - 1)
				{
					next[j] = 0;
					value += 9;
				}
				else
				{
					value += 9;
					next.clear();
					cout << "here1" << endl;
					next.resize(prev.size() + 1);
					next.back() = 1;
					value -= 1;
				}
			}
			break;
		}
	}

	for (int i = 0; i < next.size(); i++)
	{
		if (value == 0)
		{
			break;
		}

		if (next[i] < 9)
		{
			int r = 9 - next[i];
			if (r <= value)
			{
				next[i] += r;
				value -= r;
			}
			else
			{
				next[i] += value;
				value = 0;
			}
		}
	}

	return next;
}

int main()
{
	int n;
	cin >> n;
	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
	}

	vector<int> dinamics[2];

	makeMinVector(v[0], dinamics[0]);

	printVector(dinamics[0]);

	for (int i = 1; i < n; i++)
	{
		//makeMinVector(v[i], dinamics[i % 2]);
		dinamics[i % 2] = makeNextNumber(dinamics[(i - 1) % 2], v[i]);
		printVector(dinamics[i % 2]);
	}

	return 0;
}


#include <iostream>
#include <vector>

using namespace std;

void printVector(const vector<int>& v)
{
	for (int i = v.size() - 1; i >= 0; i--)
	{
		cout << v[i];
	}
	cout << endl;
}

void makeMinVector(int value, vector<int>& v)
{
	int m = value / 9;
	int r = value % 9;
	v.resize(m + (r != 0));
	for (int i = 0; i < m; i++)
	{
		v[i] = 9;
	}
	if (r != 0)
	{
		v[m] = r;
	}
}

void plusOne(vector<int>& v)
{
	int b = 1;
	for (int i = 0; i < v.size(); i++)
	{
		int a = v[i] + b;
		v[i] = a % 10;
		b = a / 10;
	}
	if (b != 0)
	{
		v.push_back(b);
	}
}

void makeNextNumber(vector<int> prev, vector<int>& next)
{
	vector<int> nextCopy(next);

	plusOne(prev);

	if (next.size() > prev.size())
	{
		return;
	}
	else
	{
		int diff = prev.size() - next.size();
		for (int i = 0; i < diff; i++)
		{
			next.push_back(0);
		}
	}

	for (int i = next.size() - 1; i >= 0; i--)
	{
		int  pointer = i - 1;
		int r = 0;

		if (next[i] < prev[i])
		{
			r = prev[i] - next[i];
		}
		else if (next[i] > prev[i])
		{
			return;
		}

		while (r > 0)
		{
			if (pointer < 0)
			{
				int j;
				for (j = 0; j < next.size(); j++)
				{
					if (next[j] != 0 && j != next.size() - 1)
					{
						next[j]--;
						next[j + 1]++;
						next[0] = next[j];
						break;
					}
				}

				if (j == next.size())
				{
					int diff = prev.size() - nextCopy.size() + 1;
					nextCopy.back()--;
					for (int i = 0; i < diff; i++)
					{
						nextCopy.push_back(0);
					}
					nextCopy.back() = 1;
					next = nextCopy;
				}

				return;
			}

			if (next[pointer] > r)
			{
				next[i] += r;
				next[pointer] -= r;
				r = 0;
			}
			else if (next[pointer] == r)
			{
				next[i] += r;
				next[pointer] = 0;
				r = 0;
			}
			else
			{
				next[i] += next[pointer];
				r -= next[pointer];
				next[pointer] = 0;
				pointer--;
			}
		}
	}
}

int main()
{
	int n;
	cin >> n;

	vector<int> v(n);

	for (int i = 0; i < n; i++)
	{
		cin >> v[i];
	}

	vector<int> dinamics[2];

	makeMinVector(v[0], dinamics[0]);

	printVector(dinamics[0]);

	for (int i = 1; i < n; i++)
	{
		makeMinVector(v[i], dinamics[i % 2]);
		makeNextNumber(dinamics[(i - 1) % 2], dinamics[i % 2]);
		printVector(dinamics[i % 2]);
	}

	return 0;
}


#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <set>
#include <map>

using namespace std;
double q,w,Y,x,y,r,X,p,t;
int main()
{
//	freopen( "input.txt","r",stdin );
//	freopen( "output.txt","w",stdout );
	cin>>q>>w>>Y>>x>>y>>r;
	q=2*Y-q;
	w=2*Y-w;
	p=((Y-w)*x)/(y-w);
	t=((Y-q)*x)/(y-q);
	if(abs(w-q)<=4*r||abs(p-t)<=2*r)
		cout<<"-1";
	else
		{
			X=(p+t)/2.0;
			printf("%.10lf",abs(X));
		}
	return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-9

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        //cout<<ini<<" "<<fin<<endl;
        mid= (ini+fin)*0.5;
        //mid=2.6666666667;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw,mid+aux,yb*mid+aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0
                && distancia
                //&& dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            //if(cmp(y1+r,auxi)<=0 || !distancia)   ini=mid;
            //else if(cmp(auxi,y2-r)<=0)    fin=mid;
            if(cmp(y2-r,auxi)<=0 || !distancia) ini=mid;
            else fin=mid;
        //}

    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    //if(distancia)
    //  cout<<fixed<<setprecision(10)<<mid<<endl;
    //else
    cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0
                && distancia
                && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<=0 )  ini=mid;
            else if(cmp(auxi,y2-r)<=0)  fin=mid;
        //}
        distancia=(cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0 );
    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    if(distancia)
        cout<<fixed<<setprecision(10)<<mid<<endl;
    else cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-8

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    double distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0
                && distancia
                && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<=0 )  ini=mid;
            else if(cmp(auxi,y2-r)<=0)  fin=mid;
        //}
    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    if(distancia)
        cout<<fixed<<setprecision(10)<<mid<<endl;
    else cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        //mid=2.6666666667;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid+aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0
                && distancia
                //&& dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            //if(cmp(y1+r,auxi)<=0 || !distancia)   ini=mid;
            //else if(cmp(auxi,y2-r)<=0)    fin=mid;
            if(cmp(y2-r,auxi)<=0 || !distancia) ini=mid;
            else fin=mid;
        //}

    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    //if(distancia)
    //  cout<<fixed<<setprecision(10)<<mid<<endl;
    //else
    cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        //mid=2.6666666667;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw,mid-aux,-yb*mid+aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0
                && distancia
                //&& dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            //if(cmp(y1+r,auxi)<=0 || !distancia)   ini=mid;
            //else if(cmp(auxi,y2-r)<=0)    fin=mid;
            if(cmp(y2-r,auxi)<=0 || !distancia) ini=mid;
            else fin=mid;
        //}

    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    //if(distancia)
    //  cout<<fixed<<setprecision(10)<<mid<<endl;
    //else
    cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0
                && distancia
                && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<=0 )  ini=mid;
            else if(cmp(auxi,y2-r)<=0)  fin=mid;
        //}
        distancia=distancia|| (cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0 );
    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    if(distancia)
        cout<<fixed<<setprecision(10)<<mid<<endl;
    else cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0
                && distancia
                && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<=0 || !distancia) ini=mid;
            else if(cmp(auxi,y2-r)<=0)  fin=mid;
        //}

    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    if(distancia)
        cout<<fixed<<setprecision(10)<<mid<<endl;
    else cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-8

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;

    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<cmp(y1,auxi)<<" "<< cmp(auxi,y2)<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0 && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r) )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<0 )   ini=mid;
            else if(cmp(auxi,y2-r)<0)   fin=mid;
        //}
    }
    cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        //mid=2.6666666667;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw,mid+aux,yb*mid+aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<0 && cmp(auxi,y2-r)<0
                && distancia
                //&& dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            //if(cmp(y1+r,auxi)<=0 || !distancia)   ini=mid;
            //else if(cmp(auxi,y2-r)<=0)    fin=mid;
            if(cmp(y2-r,auxi)<=0 || !distancia) ini=mid;
            else fin=mid;
        //}

    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    //if(distancia)
    //  cout<<fixed<<setprecision(10)<<mid<<endl;
    //else
    cout<<-1<<endl;
    return 0;
}


#include <algorithm>
#include <bitset>
#include <deque>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#include <iomanip>
#define fst first
#define snd second
#define all(x) (x).begin(), (x).end()
#define clr( a , v ) memset( a , v , sizeof(a) )
#define pb push_back
#define mp make_pair
#define sz size()
#define FORN( i , s , n ) for( int i = s ; i < (int)(n) ; i++ )
#define FOR( i , n ) FORN( i , 0 , n )
#define FORIT(i,x) for( typeof x.begin() i = x.begin() ; i != x.end() ; i++ )
#define trace(x)    cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define read ios::sync_with_stdio(false)
#define unos(x) __builtin_popcount (x)
#define EPS 1e-12

using namespace std;

typedef long long int64;
typedef vector <int> vi;
typedef pair <int,int> ii;
typedef vector <string> vs;
typedef vector <ii> vii;

int cmp ( double x, double y ){
    return (( x+EPS<y )?-1:(x-EPS>y)?1:0);
}

//DISTANCIA RECTA Ax-By+C al punto (x,y) mayor que el radio
bool dist(double A , double B , double C , double x, double y , double r ) {

    double di= fabs(A*x-B*y+C) / (sqrt(A*A+B*B)) ;
    //cout<<di<<endl;
    if(cmp(di,r)<=0) return false;
    return true;
}

int main() {
    double y1,y2,yw,xb,yb,r,xw;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    //y1=y1+r;
    //y2=y2-r;
    yw=yw-r-yb;

    double ini=0, fin=xb ,mid ,auxi;
    bool distancia;
    while(cmp(ini,fin)<0){
        mid= (ini+fin)*0.5;
        double aux=2*mid-xb;
        //if(cmp(aux,0)>=0) fin=mid;
        //else{
            aux=aux*-1;
            auxi= yw/(xb-mid);
            auxi=auxi*aux;
            auxi+=yb;
            //cout<<auxi<<endl;
            //cout<<mid<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r)<<endl;
            //cout<<dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)<<endl;
            //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
            distancia=dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y2,r);
            //cout<<distancia<<endl;
            if(cmp(y1+r,auxi)<=0 && cmp(auxi,y2-r)<0
                && distancia
                && dist(yw+yb-auxi,mid-aux,auxi*mid-aux*(yw+yb) , 0,y1,r)
                )
                {//cout<<fixed<<setprecision(10)<<auxi<<" "<<mid<<endl;
                    cout<<fixed<<setprecision(10)<<mid<<endl;
                    return 0;
                }
            if(cmp(y1+r,auxi)<=0 )  ini=mid;
            else if(cmp(auxi,y2-r)<=0)  fin=mid;
        //}
    }
    //cout<<cmp(y1+r,auxi)<<" "<< cmp(auxi,y2-r)<<endl;
    if(distancia)
        cout<<fixed<<setprecision(10)<<mid<<endl;
    else cout<<-1<<endl;
    return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
	return 1.0 * (y - y_3) / k;
}
int main() {
	while(scanf("%d %d %d %d %d %d", &y_1, &y_2, &yw, &xb, &yb, &r) != EOF) {
		y_1 += r;
		yw -= r;
		y_3 = 2 * yw - y_1;
		k = -1.0 * (y_3 - yb) / xb;
		//printf("k %lf\n", k);
		if(f(yw) < r || f(2 * yw - y_2) < r) {
			puts("-1");
		} else {
			printf("%lf\n", f(yw));
		}
	}
	return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
    return 1.0 * (y - y_3) / k;
}
int main() {
    while(scanf("%d %d %d %d %d %d", &y_1, &y_2, &yw, &xb, &yb, &r) != EOF) {
        y_1 += r;
        yw -= r;
        y_3 = 2 * yw - y_1;
        k = -1.0 * (y_3 - yb) / xb;
        //printf("k %lf\n", k);
        double xxx = ABS(2 * yw - y_2 - y_3) / sqrt(1.0 + k * k);

        if(xxx < r) {
            puts("-1");
        } else {
            printf("%lf\n", f(yw));
        }
    }
    return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
    return 1.0 * (y - y_3) / k;
}
int main() {
    while(scanf("%d %d %d %d %d %d", &y_1, &y_2, &yw, &xb, &yb, &r) != EOF) {
        y_1 += r;
        yw -= r;
        y_3 = 2 * yw - y_1;
        k = -1.0 * (y_3 - yb) / xb;
        //printf("k %lf\n", k);
        double xxx = ABS(2 * yw - y_2 - y_3) / sqrt(1.0 + k * k);

        if(xxx < r) {
            puts("-1");
        } else {
            printf("%.9lf\n", f(yw));
        }
    }
    return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
    return 1.0 * (y - y_3) / k;
}
int main() {
    while(scanf("%d %d %d %d %d %d", &y_1, &y_2, &yw, &xb, &yb, &r) != EOF) {
        y_1 += r;
        yw -= r;
        y_3 = 2 * yw - y_1;
        k = -1.0 * (y_3 - yb) / xb;
        //printf("k %lf\n", k);
        if(f(yw) < r || f(2 * yw - y_2) < r) {
            puts("-1");
        } else {
            printf("%.9lf\n", f(yw));
        }
    }
    return 0;
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
	return 1.0 * (y - y_3) / k;
}
int main() {
	while(cin >> y_1 >> y_2 >> yw >> xb >> yb >> r) {
		y_1 += r;
		yw -= r;
		y_3 = 2 * yw - y_1;
		k = -(y_3 - yb) / xb;
		if(f(yw) < r || f(2 * yw - y_2) < r) {
			puts("-1");
		} else {
			printf("%lf\n", f(yw));
		}
	}
}


#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#define REP(i,a,n) for(int i = (a); i < (int)(n); ++i)
#define foreach(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define ABS(a) ((a)>0?(a):(-(a)))
#define SWAP(a,b) do{__typeof(a) tmp = a; a = b; b = tmp;}while(0)
using namespace std;
int y_1, y_2, y_3, yw, xb, yb, r;
double k;

double f(double y) {
    return 1.0 * (y - y_3) / k;
}
int main() {
    while(scanf("%d %d %d %d %d %d", &y_1, &y_2, &yw, &xb, &yb, &r) != EOF) {
        y_1 += r;
        yw -= r;
        y_3 = 2 * yw - y_1;
        k = -1.0 * (y_3 - yb) / xb;
        //printf("k %lf\n", k);
        double xxx = (2 * yw - y_2 - y_3) / sqrt(1.0 + k * k);

        if(xxx < r) {
            puts("-1");
        } else {
            printf("%lf\n", f(yw));
        }
    }
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/30000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"NO";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/5000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"NO";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
int n,k,m,t;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    int i,j,z,w;
    double y1,y2,yw,xw1,xw2,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-y2-r)>=mid-r)
            l=mid;
        else ri=mid;
    }
    xw1=mid;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw2=mid;
    if(xw2<xw1){
        cout<<-1;
    }
    else OUTF(xw2);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
int n,k,m,t;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    int i,j,z,w;
    double y1,y2,yw,xw1,xw2,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-y2-r)>=mid-r)
            l=mid;
        else ri=mid;
    }
    xw1=mid;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw2=mid;
    if(xw2<xw1){
        cout<<-1;
    }
    else OUTF((xw1+xw2)/2);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
int n,k,m,t;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    int i,j,z,w;
    double y1,y2,yw,xw1,xw2,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=r,ri=xb-eps,ang;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-y2-r)>=mid-r)
            l=mid;
        else ri=mid;
    }
    xw1=mid;
    l=r,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw2=mid;
    if(xw2<xw1){
        cout<<-1;
    }
    else OUTF(xw2);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/50000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"NO";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/8000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"NO";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/5000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"-1";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/15000000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"NO";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    double i,j,k,z,w;
    double y1,y2,yw,xw,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=eps,ri=xb-eps,ang;
    l=eps,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw=mid;
    j=0; i=xw/2500000;
    while(j<xw){
        k=j*(yw-y1-r*2)/xw+y1+r;
        if(hypot(j,k-y2)+eps<r) {
            cout<<"-1";
            return 0;
        }
        j+=i;
    }
    j=xw;i=(xb-xw)/2500000;
    while(j<xb){
        k=(j-xb)*(yw-r-yb)/(xw-xb)+yb;
        if(hypot(j,k-y1)+eps<r){
            cout<<"-1";
            return 0;
        }
        j+=i;
    }
    OUTF(xw);
    return 0;
}


#include<bits/stdc++.h>
#define FOR(i,a,b) for(i=a;i<=b;i++)
#define FOR2(i,a,b) for(i=a;i<b;i++)
#define IFOR(i,a,b) for(i=a;i>=b;i--)
#define IFOR2(i,a,b) for(i=a;i>b;i--)
#define IND(a) scanf("%d",&a)
#define IND2(a,b) scanf("%d%d",&a,&b)
#define IND3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define IND4(a,b,c,d) scanf("%d%d%d%d",&a,&b,&c,&d)
#define INL(a) scanf("%I64d",&a)
#define INL2(a,b) scanf("%I64d%I64d",&a,&b)
#define INL3(a,b,c) scanf("%I64d%I64d%I64d",&a,&b,&c)
#define INS(s) scanf("%s",&s)
#define OUTD(a) printf("%d ",a)
#define OUTD2(a,b) printf("%d %d ",a,b)
#define OUTD3(a,b,c) printf("%d %d %d",a,b,c)
#define OUTL(a) printf("%I64d ",a)
#define OUTF(a) printf("%.12lf ",a);
#define pb push_back
#define PI acos(-1)
#define ll long long
#define mid ((l+ri)/2)
using namespace std;
const int MOD=1000000007;
const double eps=1e-8;
const int nm=300005;
int n,k,m,t;
ll res;
int a[nm];
char s[nm];
bool check[nm];
ll Pow(int x, int mu){
    if(mu==0) return 1ll;
    ll res=Pow(x,mu>>1);
    res=res*res%MOD;
    if(mu&1) res=res*x%MOD;
    return res;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("inp.txt","r",stdin);
    #endif
    int i,j,z,w;
    double y1,y2,yw,xw1,xw2,yb,xb,r;
    cin>>y1>>y2>>yw>>xb>>yb>>r;
    double l=r,ri=xb-eps,ang;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-y2-r)>=mid-r)
            l=mid;
        else ri=mid;
    }
    xw1=mid;
    l=r,ri=xb-eps;
    while(ri-l>eps){
        if((xb-mid)/(yw-yb-r)*(yw-r*2-y1)<mid)
            ri=mid;
        else l=mid;
    }
    xw2=mid;
    if(xw2<xw1){
        cout<<-1;
    }
    else OUTF((xw1+xw2)/2);
    return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ld long double
using namespace std;
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ld yd = y1+r;

	ld h1 = yw-r-yd ;
	ld h2 = yw-r-yb;
	ld x = h1*xb/(h2+h1);
	if( x < r + eps  )
		printf("-1\n");
	else{
		cout.precision(30);
		cout <<  x << endl;
	}

	return 0;
}


#include<cstdio>
#define eps 1e-6
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	if( y2 - y1  < 2*r )
		printf("-1\n");
	else{
		int yd = y1+r;

		int h1 = yw-r-yd ;
		int h2 = yw-r-yb;
		double x = double(h1)*xb/(double(h2)*h1);
		if( x < r - eps  )
			printf("-1\n");
		else
			printf("%.15lf\n" , x );
	}

	return 0;
}


#include<cstdio>
#define eps 1e-8
#define ld long double
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ld yd = y1+r;

	ld h1 = yw-r-yd ;
	ld h2 = yw-r-yb;
	ld x = h1*xb/(h2+h1);
	if( x < r + eps  )
		printf("-1\n");
	else
		printf("%.15Lf\n" , x );

	return 0;
}


#include<cstdio>
#include<iosteam>
#define eps 1e-8
#define ld long double
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ld yd = y1+r;

	ld h1 = yw-r-yd ;
	ld h2 = yw-r-yb;
	ld x = h1*xb/(h2+h1);
	if( x < r + eps  )
		printf("-1\n");
	else
		cout << x << endl;

	return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
using namespace std;

int main(){

	ll y1 , y2 ,yw, xb , yb , r;

	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	ll yd = y1+r;

	ll h1 = yw-r-yd ;
	ll h2 = yw-r-yb;

	ll x = h1*xb;
	if( r*(h1+h2) >= xb*( y2-y1 )  )
		printf("-1\n");
	else{
		cout.precision(30);
		cout <<  ((long double)x)/(h1+h2) << endl;
	}

	return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
#define ld long double
#define sqr(x) ((x)*(x))
using namespace std;

int main(){

	ll y1 , y2 ,yw, xb , yb , r;

	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	ll yd = y1+r;

	ll h1 = yw-r-yd;
	ll h2 = yw-r-yb;

	ld x = h1*xb/(ld)( h1+h2 );

	cout.precision(30);
	if( yw-r < y2 ){
		if( sqr(x) +sqr(y2-(yw-r))  <  sqr(r) +eps )
			printf("-1\n");
		else
			cout << x << endl;
	}else{
		ld v = x*(y2-y1)/h1;
		if( r > v - eps  )
			printf("-1\n");
		else
			cout << x << endl;
	}
	return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
using namespace std;
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ll yd = y1+r;

	ll h1 = yw-r-yd ;
	ll h2 = yw-r-yb;
//	ld x = h1*xb/(h2+h1);
	ll x = h1*xb;
	if( x < r*(h2+h1)  )
		printf("-1\n");
	else{
		cout.precision(30);
		cout <<  ((long double)x)/(h1+h2) << endl;
	}

	return 0;
}


#include<cstdio>
#define eps 1e-8
#define ld long double
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ld yd = y1+r+eps;

	ld h1 = yw-r-yd ;
	ld h2 = yw-r-yb;
	ld x = h1*xb/(h2+h1);
	if( x < r + eps  )
		printf("-1\n");
	else
		printf("%.15Lf\n" , x );

	return 0;
}


#include<cstdio>
#define eps 1e-6
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	if( y2 - y1  < 2*r )
		printf("-1\n");
	else{
		int yd = y1+r;

		double h1 = yw-r-yd ;
		double h2 = yw-r-yb;
		double x = h1*xb/(h2+h1);
		if( x < r + eps  )
			printf("-1\n");
		else
			printf("%.15lf\n" , x );
	}

	return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
#define ld long double
using namespace std;
ll y1 , y2 ,yw, xb , yb , r;

bool solve ( ll  yd , ld& ans ){
	ll h1 = yw-r-yd ;
	ll h2 = yw-r-yb;
//	ld x = h1*xb/(h2+h1);
	ll x = h1*xb;
	if( x <= r*(h2+h1)  )
		return 0;

	ans = (ld)x/(h1+h2);
	return 1;
}
int main(){
	cin >> y1 >> y2 >> yw >>  xb >> yb >> r ;

	ld ans = -1;
	if( solve( y1 + r , ans )  ){
		printf("%.9Lf\n", ans );
	}else if( solve( y2 - r , ans ) ){
		printf("%.9Lf\n", ans );
	}else
		printf("-1\n");

	return 0;
}


#include<cstdio>
#include<cmath>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
#define ld long double
#define sqr(x) ((x)*(x))
using namespace std;

int main(){

	ll y1 , y2 ,yw, xb , yb , r;

	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	ll yd = y1+r;

	ll h1 = yw-r-yd;
	ll h2 = yw-r-yb;

	ld x = h1*xb/(ld)( h1+h2 );

	cout.precision(30);
	ld h = sqrt( sqr(x) + sqr(h1) );
	ld v = x*(y2-yd)/h ;
	if( r > v - eps  )
		printf("-1\n");
	else
		cout << x << endl;
	return 0;
}


#include<cstdio>
#include<iostream>
#include <iomanip>
#define eps 1e-8
#define ll long long
using namespace std;
int main(){

	int y1 , y2 ,yw, xb , yb , r;

	scanf("%d%d%d%d%d%d" , &y1 ,&y2 , &yw, &xb , &yb , &r);

	ll yd = y1+r;

	ll h1 = yw-r-yd ;
	ll h2 = yw-r-yb;
//	ld x = h1*xb/(h2+h1);
	ll x = h1*xb;
	if( x <= r*(h2+h1)  )
		printf("-1\n");
	else{
		cout.precision(30);
		cout <<  ((long double)x)/(h1+h2) << endl;
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
	//	cout << xwy1 << " " << xwy2 << endl;

	//cout << r << " and " << (((y2+2*r)-(y1))*xwy1*1.0)/((yw-r)-(y1)*1.0) << endl;
	LL dis=sqrt(xwy1*xwy1-(yw-r-y1)*(yw-r-y1));
	if((y2-y1)*xwy1/dis < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
		//cout << xwy1 << " " << xwy2 << endl;

	//cout << r << " and " << (((y2+r)-(y1+r))*xwy1*1.0)/(yw-(y1+r)*1.0) << endl;
	if(xwy1 - r <= 0 || xwy1 < xwy2)
	{
		cout << "-1\n";
	}
	else if((((y2+r)-(y1+r))*xwy1*1.0)/(yw-(y1+r)*1.0) < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
	if(xwy1 - r <= 0 || xwy1 < xwy2)
	{
		cout << "-1\n";
	}
	else
	{
		//cout << xwy1 << " " << xwy2 << endl;
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
		//cout << xwy1 << " " << xwy2 << endl;

	if(xwy1 - r <= 0 || xwy1 < xwy2)
	{
		cout << "-1\n";
	}
	else if((y2-(y1+r))*xwy1/(yw-(y1+r)) < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
	//	cout << xwy1 << " " << xwy2 << endl;

	//cout << r << " and " << (((y2+2*r)-(y1))*xwy1*1.0)/((yw-r)-(y1)*1.0) << endl;
	y1-=r;y2+=r;
	y1+=r;
	double dis=sqrt(xwy1*xwy1+(yw-r-y1)*(yw-r-y1));
	if((y2-y1)*xwy1/dis < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
		//cout << xwy1 << " " << xwy2 << endl;

	//cout << r << " and " << (((y2+2*r)-(y1))*xwy1*1.0)/(yw-(y1)*1.0) << endl;
	if((((y2+2*r)-(y1))*xwy1*1.0)/(yw-(y1)*1.0) < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


/*	Karan Dhamele	    */
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>

using namespace std;

/* General Declarations */

#define INF		1000000007
#define LL		long long int
#define SI(n)		cin >> n;
#define SC(c)		scanf("%c",&c);
#define SS(s)		scanf("%s",s);
#define FOR(x,a,b)	for(LL x=a;x<b;x++)
#define REP(i,n)	for(LL i=0;i<n;i++)
#define MP		make_pair
#define PB		push_back

/* Container's */

#define	VI		vector<LL>
#define PLL             pair<LL,LL>  /* A Single Pair  */
#define VP		vector<PLL> /* Vector of Pairs */
#define VS		vector<string>
#define VVI		vector<VI>
#define VVS		vector<VS>

int main()
{
	double y1,y2,yw,xb,yb,r;
	cin >> y1 >> y2 >> yw >> xb >> yb >> r;
	y1+=r;
	y2-=r;
	double numy1,deny1,numy2,deny2;
	numy1=xb*(yw-r-y1);
	deny1=(2*yw - 2*r - y1 -yb);
	numy2=xb*(yw-r-y2);
	deny2=(2*yw - 2*r - y2 -yb);
	double xwy1,xwy2;
	xwy1=numy1/deny1;
	xwy2=numy2/deny2;
		//cout << xwy1 << " " << xwy2 << endl;

	//cout << r << " and " << (((y2+2*r)-(y1))*xwy1*1.0)/(yw-(y1)*1.0) << endl;
	if(xwy1 - r <= 0 || xwy1 < xwy2)
	{
		cout << "-1\n";
	}
	else if((((y2+2*r)-(y1))*xwy1*1.0)/(yw-(y1)*1.0) < r )
	{
		cout << "-1\n";
	}
	else
	{
		printf("%.12lf\n",xwy1);
	}

	return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-15;
    if (xb<=r1)
    {
        cout<<-1;
        return 0;
    }
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-r1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+r1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))>r1)
            {
                cout<<fixed<<setprecision(15)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-9;
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))-eps>r1)
            {
                cout<<fixed<<setprecision(12)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-12;
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))>r1)
            {
                cout<<fixed<<setprecision(12)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-15;
    if (xb<=r)
    {
        cout<<-1;
        return 0;
    }
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))-eps>r1)
            {
                cout<<fixed<<setprecision(15)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-9;
    if (xb<=r1)
    {
        cout<<-1;
        return 0;
    }
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-r1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+r1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))>r1)
            {
                cout<<fixed<<setprecision(15)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}


#include <algorithm>
#include <numeric>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <iostream>
#include <fstream>
#include <cmath>
#include <math.h>
#include <iomanip>
#include <stdlib.h>
#include <time.h>

using namespace std;

#define FOR(i,n) for (int i=0; i<n; ++i)
#define FORE(i,n) for (int i=0; i<=n; ++i)
#define REP(i,a,b) for (int i=a; i<b; ++i)
#define REPE(i,a,b) for (int i=a; i<=b; ++i)
#define ALL(c) (c).begin(), (c).end()
#define SORT(c) sort(ALL(c))
#define mp make_pair
#define INF (1e9)

typedef pair<int, int> PII;
typedef vector<PII> VPII;
typedef long long int LL;
typedef vector<int> VI;
typedef vector<bool> VB;
typedef vector<VI> VVI;
const double pi = acos(-1.0);
const int inf =(int) 1e9;

const double inf1 = 1e-9;
const int ss=(int)1e6+3;
const int base=inf;

bool pred (const pair<LL,LL>& i, const pair<LL,LL>& j)
{
    if (i.first==j.first)
        return i.second<j.second;
    else
        return i.first<j.first;
}

int main()
{
#ifdef _DEBUG
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    double y1,y2,yw,xb,yb,r1;
    cin>>y1>>y2>>yw>>xb>>yb>>r1;
    double h=yw-yb-r1;
    double l=0;
    double r=xb;
    double dist=(r+l)/2.0;
    double a;
    double z;
    bool t=false;
    double aa,bb,cc;
    double eps=1e-15;
    if (xb<=r1)
    {
        cout<<-1;
        return 0;
    }
    while(l+eps<r)
    {
        a=(atan(h/(xb-dist)));//*180.0)/pi;
        //a=90-a;
        //a=(a*pi)/180.0;
        z=dist*tan(a);
        z=yw-z-1;
        if (z+r1<y2 && z-r1>y1)
        {
            aa=z-yw+1;
            bb=dist;
            cc=-dist*z;
            if (abs((bb*y2+cc)/sqrt(aa*aa+bb*bb))-eps>r1)
            {
                cout<<fixed<<setprecision(15)<<dist;
                t=true;
                break;
            }
            else
            {
                l=dist;
                dist=(l+r)/2.0;
            }
        }
        else
        {
            if (z+r1>=y2)
            {
                //r=r
                l=dist;
                dist=(l+r)/2.0;
            }
            if (z-r1<=y1)
            {
                //l=l
                r=dist;
                dist=(l+r)/2.0;
            }
        }
    }
    if (!t)
        cout<<-1;
    return 0;
}