Чертеж

면접 대비

시간 제한2초메모리 제한1024 MB

요약
주어진 길이의 막대 사슬로 두 점을 연결할 수 있는지 판정하고, 가능하면 각 관절의 좌표를 출력한다.
난이도

보통10점 중 6점

유형
기하, 구현, 그리디, 수학
정답자
아직 제출이 없습니다

문제

Убегая от очередного недружелюбного существа из параллельного измерения, Гордон Фримен укрылся в лаборатории, где раньше изучали поведение различных кристалов, доставленных из измерения Зен. Когда он понял, что ему не угражает никакая опасность, Фримен осмотрелся и увидел интересное оборудование, которое предназначалось для сверхточного рисования сложных схем. Однако, оно не было расчитано на рисования обычных чертежей, и не могло нарисовать некоторые из них в силу своего устройства. На компьютере, который был в лаборатории, Фримен нашел чертежи всех помещений федерального исследовательского центра, наличие которых в распечатенном виде очень сильно увеличило бы его шансы на выживание. Нетрудно догадаться, что он решил сделать!

Само устройство по рисованию схем выглядело следующим образом. В некоторой точке A_0A\_0 плоскости чертежа была закреплена <<рука>>, состоящая из nn последовательно соединенных с помощью шарниров металических сегментов. Обозначим длину первого сегмента (того, который прикреплен к точке A_0A\_0) как l_1l\_1, следующего l_2l\_2, ..., последнего l_nl\_n. Обозначим точки соединения сегментов c номерами ii и i+1i + 1 как A_iA\_i, а конец последнего сегмента A_nA\_n. В точке A_nA\_n закреплен инструмент, который позволяет рисовать точку на чертеже. Устройство управления может разместить шарнирные соединения в точках A_iA\_i в плоскости чертежа, если для всех i<ni < n справедливо, что ∣A_iA_i+1∣=l_i|A\_i A\_{i + 1}| = l\_i.

Чтобы нарисовать чертежи, Фримену необходимо узнать, все ли необходимые точки сможет нарисовать это устройство. Также для каждой точки ему необходимо узнать координаты всех A_iA\_i. Помогите ему в этом.

입력

В первой строке входного файла находятся четыре целых числа x_0x\_0, y_0y\_0, x_nx\_n, y_ny\_n (−10,000≤x_0,y_0,x_n,y_n≤10,000-10{\\,}000 \le x\_0, y\_0, x\_n, y\_n \le 10{\\,}000) --- координаты точки A_0A\_0, к которой прикреплен первый сегмент чертежного устройства, а также точки A_nA\_n, которую необходимо нарисовать.

В следующей строке дано целое число nn (1≤n≤1031 \le n \le 10^3) --- количество сегментов в устройстве рисования. В следующей строке находятся nn целых чисел l_il\_i (1≤l_i≤1,0001 \le l\_i \le 1{\\,}000) --- длины сегментов.

출력

В первой строке выходного файла выведите YES, если можно нарисовать точку A_nA\_n и NO в противном случае. Если точку нарисовать можно, то в следующих n+1n + 1 строках выведите координаты A_iA\_i для всех ii от нуля до nn. Ответ будет засчитан, если расстояние между выведенными вами точками A_iA\_i и A_i+1A\_{i + 1} отличается от l_il\_i не более, чем на 10−310^{-3}.

예제1

  1. 예제 1

    입력
    0 0 6 0
    2
    5 5
    
    예상 출력
    YES
    0.000 0.000
    3.000 4.000
    6.000 0.000