아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Легкоатлетический манеж НГУ

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

요약
1부터 N까지의 수를 합이 같은 M개의 묶음으로 나누고, 불가능하면 NO를 출력한다.
난이도

보통10점 중 6점

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

문제

Рядом со спортивным комплексом НГУ решили построить легкоатлетический манеж с M одинаковыми прямолинейными беговыми дорожками. Они будут покрыты полосами из синтетического материала тартана. На складе имеются N полос тартана, длины которых равны 1, 2, …, N метров соответственно (i-я полоса имеет длину i метров). 

Было решено использовать все полосы со склада, что определило длину дорожек манежа. Полосы тартана должны быть уложены без перекрытий и промежутков. Разрезать полосы на части нельзя. Полосы укладываются вдоль дорожек, ширина полосы тартана совпадает с шириной беговой дорожки.

Требуется написать программу, которая определяет, можно ли покрыть всем имеющимся материалом M дорожек, и если это возможно, то распределяет полосы тартана по дорожкам.

입력

Во входном файле содержатся два целых числа, разделенных пробелом: M — количество дорожек и N — количество полос тартана (1 ≤ M ≤ 1000, 1 ≤ N ≤ 30000).

출력

В случае, если распределить имеющиеся полосы тартана на M дорожек одинаковой длины невозможно, то в выходной файл выведите слово «NO».

В противном случае, в первую строку выведите слово «YES». В последующих M строках дайте описание использованных полос для каждой дорожки в следующем формате: сначала целое число t — количество полос на дорожке, затем t целых чисел — длины полос, которые составят эту дорожку. Если решений несколько, можно вывести любое из них.

힌트

예제2

  1. 예제 1

    입력
    2 4
    
    예상 출력
    YES
    2 1 4
    2 3 2
    
  2. 예제 2

    입력
    3 4
    
    예상 출력
    NO