There are quite a number of temperature scales. For this task we will concentrate on four of the perhaps best-known ones:
Kelvin, Celsius, Fahrenheit, and Rankine.

The Celsius and Kelvin scales have the same magnitude, but different null points.

 0 degrees Celsius corresponds to 273.15 kelvin.
 0 kelvin is absolute zero.
The Fahrenheit and Rankine scales also have the same magnitude, but different null points.

 0 degrees Fahrenheit corresponds to 459.67 degrees Rankine.
 0 degrees Rankine is absolute zero.
The Celsius/Kelvin and Fahrenheit/Rankine scales have a ratio of 5 : 9.



Task
Write code that accepts a value of kelvin, converts it to values of the three other scales, and prints the result.



Example

K  21.00

C  -252.15

F  -421.87

R  37.80



kelvin = proc (k: real) returns (real) 
    return(k) 
end kelvin 
 
celsius = proc (k: real) returns (real)
    return(k - 273.15)
end celsius
 
rankine = proc (k: real) returns (real)
    return(k * 9./5.)
end rankine
 
fahrenheit = proc (k: real) returns (real)
    return(rankine(k) - 459.67)
end fahrenheit
 
conv = struct[letter: char, func: proctype (real) returns (real)]
 
convs = sequence[conv]$[
    conv${letter: 'K', func: kelvin},
    conv${letter: 'C', func: celsius},
    conv${letter: 'F', func: fahrenheit},
    conv${letter: 'R', func: rankine}
]
 
start_up = proc ()
    pi: stream := stream$primary_input()
    po: stream := stream$primary_output()
 
    stream$puts(po, "Enter temperature in Kelvin: ")
    k: real := real$parse(stream$getl(pi))
 
    for c: conv in sequence[conv]$elements(convs) do
        stream$putc(po, c.letter)
        stream$puts(po, "  ")
        stream$putl(po, f_form(c.func(k), 6, 2))
    end
end start_up