#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <iomanip>

using namespace std;

struct Point
{
        double x, y;
};

struct Vector2
{
        double x, y;
};

double deg(double rad) // Zamień radiany na stopnie
{
	return rad/M_PI*180;
}
double rad(double deg) // Zamień stopnie na radiany
{
	return deg*M_PI/180;
}

double angle(Vector2 a, Vector2 b) // oblicz kąt pomiędzy wektorami
{
        return acos ( (a.x * b.x + a.y * b.y) / ( sqrt( pow(a.x, 2) + pow(a.y, 2) ) *  sqrt( pow(b.x, 2) + pow(b.y, 2) )) );;
}

Point rotate(Point A, Point S, double alpha) // oblicz kąt pomiędzy wektorami
{
	Point B;// szukany punkt
	if(A.x == S.x && A.y == S.y)
		return A;
	Vector2 a, b; // wektory a i b
		a.x = A.x - S.x;
		a.y = A.y - S.y;

	double r = sqrt(pow(a.x, 2) + pow(a.y, 2)); // długość wektora a

	Point tmp; tmp.x = S.x+1; tmp.y = S.y; // punkt pomocniczy
	Vector2 t; // wektor pomocniczy
		t.x = 2; // zapis troszkę sktócony :)
		t.y = 0;

	double beta = angle(a, t); // kąt pomiędzy wektorami a i t

	double gamma = beta + alpha;// kąt pomiędzy wektoami a i b

	Vector2 c; // kolejny wektor pomocniczny(dla zobrazowania)
		c.x = r;
		c.y = 0;

	b.x = cos(gamma) * r;// C.x
	b.y = sin(gamma) * r;

	// oblicz pozycję B mając dany wektor b i punkt S
	B.x = S.x + b.x;
	B.y =S.y +   b.y;

	return B;
}

int main()
{
	Point a, s;
	double alfa;
	// Wejście:
	// Ax Ay Sx Sy Alfa
	// Wyjście:
	// Bx By
	while(cin>>a.x>>a.y>>s.x>>s.y>>alfa)
	{
		Point b = rotate(a, s, rad(alfa));// oblicz pozycje punktu B
		cout<<fixed <<b.x<<" "<<b.y<<" "<<endl; // Wypisz pozycje punktu B
	}

	return 0;
}