section .data
    ; Длины трех отрезков
    a dd 5
    b dd 7
    c dd 10
 
    ; Сообщения
    msg_triangle db "Triangle can be formed", 0xA, 0
    msg_no_triangle db "Triangle cannot be formed", 0xA, 0
    msg_test db "Testing segments: ", 0
    msg_comma db ", ", 0
    newline db 0xA, 0
 
section .bss
    buffer resb 16
 
section .text
    global _start
 
_start:
    ; Выводим тестируемые отрезки
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_test
    mov rdx, 18
    syscall
 
    ; Выводим длину a
    mov eax, [a]
    call print_number
 
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_comma
    mov rdx, 2
    syscall
 
    ; Выводим длину b
    mov eax, [b]
    call print_number
 
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_comma
    mov rdx, 2
    syscall
 
    ; Выводим длину c
    mov eax, [c]
    call print_number
 
    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall
 
    ; Проверяем условие треугольника: a + b > c
    mov eax, [a]
    add eax, [b]        ; eax = a + b
    cmp eax, [c]        ; сравниваем с c
    jle .no_triangle    ; если a + b <= c, треугольник невозможен
 
    ; Проверяем: a + c > b
    mov eax, [a]
    add eax, [c]        ; eax = a + c
    cmp eax, [b]        ; сравниваем с b
    jle .no_triangle    ; если a + c <= b, треугольник невозможен
 
    ; Проверяем: b + c > a
    mov eax, [b]
    add eax, [c]        ; eax = b + c
    cmp eax, [a]        ; сравниваем с a
    jle .no_triangle    ; если b + c <= a, треугольник невозможен
 
    ; Все условия выполнены - треугольник возможен
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_triangle
    mov rdx, 22
    syscall
 
.no_triangle:
    ; Хотя бы одно условие не выполнено
    mov rax, 1
    mov rdi, 1
    mov rsi, msg_no_triangle
    mov rdx, 26
    syscall
 
    ; Завершаем программу
    mov rax, 60
    mov rdi, 0
    syscall
 
; Функция для вывода числа из EAX
print_number:
    push rax
    push rbx
    push rcx
    push rdx
    push rsi
 
    mov rsi, buffer + 15
    mov byte [rsi], 0
    mov ecx, 10
 
.convert_loop:
    xor edx, edx
    add dl, '0'
    dec rsi
    mov [rsi], dl
    test eax, eax
    jnz .convert_loop
 
    mov rdx, buffer + 16
    sub rdx, rsi
 
    mov rax, 1
    mov rdi, 1
    syscall
 
    pop rsi
    pop rdx
    pop rcx
    pop rbx
    pop rax
    ret
				c2VjdGlvbiAuZGF0YQogICAgOyDQlNC70LjQvdGLINGC0YDQtdGFINC+0YLRgNC10LfQutC+0LIKICAgIGEgZGQgNQogICAgYiBkZCA3CiAgICBjIGRkIDEwCiAgICAKICAgIDsg0KHQvtC+0LHRidC10L3QuNGPCiAgICBtc2dfdHJpYW5nbGUgZGIgIlRyaWFuZ2xlIGNhbiBiZSBmb3JtZWQiLCAweEEsIDAKICAgIG1zZ19ub190cmlhbmdsZSBkYiAiVHJpYW5nbGUgY2Fubm90IGJlIGZvcm1lZCIsIDB4QSwgMAogICAgbXNnX3Rlc3QgZGIgIlRlc3Rpbmcgc2VnbWVudHM6ICIsIDAKICAgIG1zZ19jb21tYSBkYiAiLCAiLCAwCiAgICBuZXdsaW5lIGRiIDB4QSwgMAoKc2VjdGlvbiAuYnNzCiAgICBidWZmZXIgcmVzYiAxNgoKc2VjdGlvbiAudGV4dAogICAgZ2xvYmFsIF9zdGFydAoKX3N0YXJ0OgogICAgOyDQktGL0LLQvtC00LjQvCDRgtC10YHRgtC40YDRg9C10LzRi9C1INC+0YLRgNC10LfQutC4CiAgICBtb3YgcmF4LCAxCiAgICBtb3YgcmRpLCAxCiAgICBtb3YgcnNpLCBtc2dfdGVzdAogICAgbW92IHJkeCwgMTgKICAgIHN5c2NhbGwKICAgIAogICAgOyDQktGL0LLQvtC00LjQvCDQtNC70LjQvdGDIGEKICAgIG1vdiBlYXgsIFthXQogICAgY2FsbCBwcmludF9udW1iZXIKICAgIAogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgbXNnX2NvbW1hCiAgICBtb3YgcmR4LCAyCiAgICBzeXNjYWxsCiAgICAKICAgIDsg0JLRi9Cy0L7QtNC40Lwg0LTQu9C40L3RgyBiCiAgICBtb3YgZWF4LCBbYl0KICAgIGNhbGwgcHJpbnRfbnVtYmVyCiAgICAKICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIG1zZ19jb21tYQogICAgbW92IHJkeCwgMgogICAgc3lzY2FsbAogICAgCiAgICA7INCS0YvQstC+0LTQuNC8INC00LvQuNC90YMgYwogICAgbW92IGVheCwgW2NdCiAgICBjYWxsIHByaW50X251bWJlcgogICAgCiAgICBtb3YgcmF4LCAxCiAgICBtb3YgcmRpLCAxCiAgICBtb3YgcnNpLCBuZXdsaW5lCiAgICBtb3YgcmR4LCAxCiAgICBzeXNjYWxsCgogICAgOyDQn9GA0L7QstC10YDRj9C10Lwg0YPRgdC70L7QstC40LUg0YLRgNC10YPQs9C+0LvRjNC90LjQutCwOiBhICsgYiA+IGMKICAgIG1vdiBlYXgsIFthXQogICAgYWRkIGVheCwgW2JdICAgICAgICA7IGVheCA9IGEgKyBiCiAgICBjbXAgZWF4LCBbY10gICAgICAgIDsg0YHRgNCw0LLQvdC40LLQsNC10Lwg0YEgYwogICAgamxlIC5ub190cmlhbmdsZSAgICA7INC10YHQu9C4IGEgKyBiIDw9IGMsINGC0YDQtdGD0LPQvtC70YzQvdC40Log0L3QtdCy0L7Qt9C80L7QttC10L0KICAgIAogICAgOyDQn9GA0L7QstC10YDRj9C10Lw6IGEgKyBjID4gYgogICAgbW92IGVheCwgW2FdCiAgICBhZGQgZWF4LCBbY10gICAgICAgIDsgZWF4ID0gYSArIGMKICAgIGNtcCBlYXgsIFtiXSAgICAgICAgOyDRgdGA0LDQstC90LjQstCw0LXQvCDRgSBiCiAgICBqbGUgLm5vX3RyaWFuZ2xlICAgIDsg0LXRgdC70LggYSArIGMgPD0gYiwg0YLRgNC10YPQs9C+0LvRjNC90LjQuiDQvdC10LLQvtC30LzQvtC20LXQvQogICAgCiAgICA7INCf0YDQvtCy0LXRgNGP0LXQvDogYiArIGMgPiBhCiAgICBtb3YgZWF4LCBbYl0KICAgIGFkZCBlYXgsIFtjXSAgICAgICAgOyBlYXggPSBiICsgYwogICAgY21wIGVheCwgW2FdICAgICAgICA7INGB0YDQsNCy0L3QuNCy0LDQtdC8INGBIGEKICAgIGpsZSAubm9fdHJpYW5nbGUgICAgOyDQtdGB0LvQuCBiICsgYyA8PSBhLCDRgtGA0LXRg9Cz0L7Qu9GM0L3QuNC6INC90LXQstC+0LfQvNC+0LbQtdC9CiAgICAKICAgIDsg0JLRgdC1INGD0YHQu9C+0LLQuNGPINCy0YvQv9C+0LvQvdC10L3RiyAtINGC0YDQtdGD0LPQvtC70YzQvdC40Log0LLQvtC30LzQvtC20LXQvQogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgbXNnX3RyaWFuZ2xlCiAgICBtb3YgcmR4LCAyMgogICAgc3lzY2FsbAogICAgam1wIC5leGl0Cgoubm9fdHJpYW5nbGU6CiAgICA7INCl0L7RgtGPINCx0Ysg0L7QtNC90L4g0YPRgdC70L7QstC40LUg0L3QtSDQstGL0L/QvtC70L3QtdC90L4KICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIG1zZ19ub190cmlhbmdsZQogICAgbW92IHJkeCwgMjYKICAgIHN5c2NhbGwKCi5leGl0OgogICAgOyDQl9Cw0LLQtdGA0YjQsNC10Lwg0L/RgNC+0LPRgNCw0LzQvNGDCiAgICBtb3YgcmF4LCA2MAogICAgbW92IHJkaSwgMAogICAgc3lzY2FsbAoKOyDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0LLRi9Cy0L7QtNCwINGH0LjRgdC70LAg0LjQtyBFQVgKcHJpbnRfbnVtYmVyOgogICAgcHVzaCByYXgKICAgIHB1c2ggcmJ4CiAgICBwdXNoIHJjeAogICAgcHVzaCByZHgKICAgIHB1c2ggcnNpCiAgICAKICAgIG1vdiByc2ksIGJ1ZmZlciArIDE1CiAgICBtb3YgYnl0ZSBbcnNpXSwgMAogICAgbW92IGVjeCwgMTAKICAgIAouY29udmVydF9sb29wOgogICAgeG9yIGVkeCwgZWR4CiAgICBkaXYgZWN4CiAgICBhZGQgZGwsICcwJwogICAgZGVjIHJzaQogICAgbW92IFtyc2ldLCBkbAogICAgdGVzdCBlYXgsIGVheAogICAgam56IC5jb252ZXJ0X2xvb3AKICAgIAogICAgbW92IHJkeCwgYnVmZmVyICsgMTYKICAgIHN1YiByZHgsIHJzaQogICAgCiAgICBtb3YgcmF4LCAxCiAgICBtb3YgcmRpLCAxCiAgICBzeXNjYWxsCiAgICAKICAgIHBvcCByc2kKICAgIHBvcCByZHgKICAgIHBvcCByY3gKICAgIHBvcCByYngKICAgIHBvcCByYXgKICAgIHJldA==