import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

T read(T)() { return readln.chomp.to!T; }
T[] reads(T)() { return readln.split.to!(T[]); }
alias readint = read!int;
alias readints = reads!int;

double radians(double deg) {
    return deg * PI / 180;
}

void main() {
    auto xs = readints;
    int a = xs[0], b = xs[1], c = xs[2];

    /*
        2 辺 a, b とその間の角 c (度)から
        - 面積 S
        - 周の長さ L
        - a を底辺としたときの高さ h
        をそれぞれ求める
    */

    double h = b * sin(radians(c));
    double area = a * h * 0.5;
    // 余弦定理より辺の長さを求める
    double perimeter = a + b + sqrt(a^^2 + b^^2 - 2 * a * b * cos(radians(c)));

    writefln("%.6f", area);
    writefln("%.6f", perimeter);
    writefln("%.6f", h);
}

