The Bad Luck Island is inhabited by three kinds of species: *r* rocks, *s* scissors and *p* papers. At some moments of time two random individuals meet (all pairs of individuals can meet equiprobably), and if they belong to different species, then one individual kills the other one: a rock kills scissors, scissors kill paper, and paper kills a rock. Your task is to determine for each species what is the probability that this species will be the only one to inhabit this island after a long enough period of time.
The single line contains three integers *r*, *s* and *p* (1 ≤ *r*, *s*, *p* ≤ 100) — the original number of individuals in the species of rock, scissors and paper, respectively.
# https://codeforces.com/contest/540/problem/D

#L = [2,1,2]

#initialstate = [1,1,3] #rock,scissor, paper 

initialstate = [int(x) for x in input().split()]

#L = [1,0,3]

#L = [1,2,0]

#L = [0,0,2] 

dicti = {str([2,1,2]): [0.15, 0.3, 0.55]} 


def mult(alist, aconstant):
    listprod = [] 
    for i in range(len(alist)):
        listprod.append(alist[i]*aconstant) 
    return listprod

def div(alist, aconstant):
    listdiv = [] 
    for i in range(len(alist)):
        listdiv.append(alist[i]/aconstant) 
    return listdiv 

def add(lista, listb, listc):
    listsum = []
    for i in range(len(lista)):
        listsum.append(lista[i]+listb[i]+listc[i]) 
    return listsum

def prob(L):

    if L[0] == L[1] == L[2]:
        return [1/3,1/3,1/3]
    elif str(L) in dicti.keys():
        return dicti[str(L)]
    else:
        #[i for i, e in enumerate(a) if e != 0]
        x = [i for i, e in enumerate(L) if e == 0]
        val = [0,0,0]
        
        if len(x) == 1:
            #print("x: ",x) 
            val[x[0]+1-3*(x[0]==2)] = 1 
            return val 
        elif len(x) == 2:
            y = [i for i, e in enumerate(L) if e != 0]
            val[y[0]] = 1
            return val

        #s = sum(L)         

        #total = L[0]*L[1] + L[1]*L[2] + L[0]*L[2] 
        total = sum(L)*(sum(L)-1)/2 
        
        prock = L[0]*L[2]/total
        pscissor = L[1]*L[2]/total
        ppaper = L[0]*L[1]/total

        pnostatechange= 1-(prock+pscissor +ppaper); x = 1/(1-pnostatechange) 
        
        case1 = [(L[0]-1), L[1], L[2]]
        
        case2 = [(L[0]), L[1], (L[2]-1)]
    
        case3 = [L[0], L[1]-1, L[2]]
 
        
        # return add(mult(prob(case1),prock), mult(prob(case2),pscissor), mult(prob(case3),ppaper))    

        dicti[str(L)] = add(mult(prob(case1),prock*x), mult(prob(case2),pscissor*x), mult(prob(case3),ppaper*x))
        
        return dicti[str(L)]
    
        #return (mult(alist, aconstant)
        #new4 = [new1[0]+new2[0] + new3[0] ,new1[1]+new2[1] + new3[1],new1[2]+new2[2]+new3[2]]
        
        return new4


#x = [i for i, e in enumerate(L) if e == 0]

#print(x)

ans = prob(initialstate);  normalized = div(ans,sum(ans))

#print()  

for elem in normalized:
    print (elem, end = ' ') 
 
def prob2(L):

    if L[0] == L[1] == L[2]:
        return [1/3,1/3,1/3]
    elif str(L) in dicti.keys():
        return dicti[str(L)]
    else:
        #[i for i, e in enumerate(a) if e != 0]
        x = [i for i, e in enumerate(L) if e == 0]
        val = [0,0,0]
        
        if len(x) == 1:
            #print("x: ",x) 
            val[x[0]+1-3*(x[0]==2)] = 1 
            return val 
        elif len(x) == 2:
            y = [i for i, e in enumerate(L) if e != 0]
            val[y[0]] = 1
            return val

        #s = sum(L)         

        #total = L[0]*L[1] + L[1]*L[2] + L[0]*L[2] 
        total = sum(L)*(sum(L)-1)/2 
        
        prock = L[0]*L[2]/total
        pscissor = L[1]*L[2]/total
        ppaper = L[0]*L[1]/total

        pnostatechange= 1-(prock+pscissor +ppaper); x = 1/(1-pnostatechange) 
        
        case1 = [(L[0]-1), L[1], L[2]]
        
        case2 = [(L[0]), L[1], (L[2]-1)]
    
        case3 = [L[0], L[1]-1, L[2]]

        print("CURRENT STATE being considered: ", L)
        print("case1: ",case1, " prob case1 arises ",  prock, " result if case 1: ", prob(case1)) 
        print("case2: ",case2, " prob case2 arises ",  pscissor, " result if case 2: ", prob(case2)) 
        print("case3: ",case3, " prob case3 arises ",  ppaper, " result if case 3: ", prob(case3))
        print()
        print()
        
        # return add(mult(prob(case1),prock), mult(prob(case2),pscissor), mult(prob(case3),ppaper))    

        return add(mult(prob(case1),prock*x), mult(prob(case2),pscissor*x), mult(prob(case3),ppaper*x))
    
        #return (mult(alist, aconstant)
        #new4 = [new1[0]+new2[0] + new3[0] ,new1[1]+new2[1] + new3[1],new1[2]+new2[2]+new3[2]]
        
        return new4 

