Bob is about to take a hot bath. 

There are two taps to fill the bath: a hot water tap and a cold water tap. The cold water's temperature is t1, and the hot water's temperature is t2. The cold water tap can transmit any integer number of water units per second from 0 to x1, inclusive. Similarly, the hot water tap can transmit from 0 to x2 water units per second.

If y1 water units per second flow through the first tap and y2 water units per second flow through the second tap, then the resulting bath water temperature will be:

<image>

Bob wants to open both taps so that the bath water temperature was not less than t0. However, the temperature should be as close as possible to this value. If there are several optimal variants, Bob chooses the one that lets fill the bath in the quickest way possible.

Determine how much each tap should be opened so that Bob was pleased with the result in the end.

Input

You are given five integers t1, t2, x1, x2 and t0 (1 ≤ t1 ≤ t0 ≤ t2 ≤ 106, 1 ≤ x1, x2 ≤ 106).

Output

Print two space-separated integers y1 and y2 (0 ≤ y1 ≤ x1, 0 ≤ y2 ≤ x2).

Examples

Input

10 70 100 100 25


Output

99 33

Input

300 500 1000 1000 300


Output

1000 0

Input

143 456 110 117 273


Output

76 54

Note

In the second sample the hot water tap shouldn't be opened, but the cold water tap should be opened at full capacity in order to fill the bath in the quickest way possible.

import java.math.*;
import java.io.*;
import java.util.*;
public class CNew
{
	StringTokenizer st;
	BufferedReader in;
	PrintWriter ob;
	public static void main(String args[])throws IOException {
		new CNew().run();
	}
	void run()throws IOException   {
		in=new BufferedReader(new InputStreamReader(System.in));
		ob=new PrintWriter(System.out);
		solve();
		ob.flush();
	}
	void solve()throws IOException {
		read();
		int t1=ni();
		int t2=ni();
		int x1=ni();
		int x2=ni();
		int t0=ni();
		int num=t2-t0;
		int den=t0-t1;
		if(t2==t1){
			ob.println(x1+" "+x2);
			return;
		}
		if(t2==t0)  {
			ob.println("0 "+x2);
			return;
		}
		else if(t1==t0) {
			ob.println(x1+" 0");
			return;
		}
		else{
			long temp=0;
			int ans1=0,ans2=0;
			double diff=Integer.MAX_VALUE;
			for(int i=0;i<=x2;i++)
			{
				int y2=i;
				int y1=(int)((1L*(t2-t0)*y2)/(t0-t1));
				temp=(1L*t1*y1)+(1L*t2*y2);
				double temp2=temp/(double)(y1+y2);
				if(y1>x1) {
					y1=x1;
					temp=(1L*t1*y1)+(1L*t2*y2);
					temp2=temp/(double)(y1+y2);
					}
				if(temp2>=t0 && (double)(temp2-t0)<=diff)
				{
					diff=temp2-t0;
					ans1=y1;
					ans2=y2;
				}
			}
			ob.println(ans1+" "+ans2);
	}
}
	void read()throws IOException  {
		st=new StringTokenizer(in.readLine());
	}
	int ni(){
		return Integer.parseInt(st.nextToken());
	}
	long nl(){
		return Long.parseLong(st.nextToken());
	}
	double nd(){
		return Double.parseDouble(st.nextToken());
	}
	String ns(){
		return st.nextToken();
	}
	char nc(){
		return st.nextToken().charAt(0);
	}
	int[] nia(int n)throws IOException {
		int a[]=new int[n];
		read();
		for(int i=0;i<n;i++){
			a[i]=Integer.parseInt(st.nextToken());
		}
		return a;
	}
	long[] nla(int n)throws IOException {
		long a[]=new long[n];
		read();
		for(int i=0;i<n;i++){
			a[i]=Long.parseLong(st.nextToken());
		}
		return a;
	}
}
