
def maxima_val(llista_vals):
    # return max(llista_vals, key=lambda x: (x[1],x[0]))
    max_id, max_val = llista_vals[0]
    for id_x, val_x in llista_vals[1:]:
        if val_x > max_val:
            max_id, max_val = id_x, val_x
    return (max_id, max_val)


def parelles_afins(dic_vals, minim_val):
    r = []
    for id1 in dic_vals:
        id2, val2 = maxima_val(dic_vals[id1])
        if id1 < id2:
            id3, val3 = maxima_val(dic_vals[id2])
            if id1 == id3 and val2 >= minim_val and val3 >= minim_val:
                parella = (id1, id2, val2, val3)
                r.append(parella)
    r.sort()
    return r
