Олимпиадный тренинг

Задача . A. Разбиение последовательности цифр


Вам задана последовательность \(s\), состоящая из \(n\) цифр от \(1\) до \(9\).

Вам нужно разбить ее на хотя бы два отрезка (отрезок — это последовательность подряд идущих элементов) (другими словами, вам нужно поставить разделители между некоторыми цифрами последовательности) таким образом, что каждый элемент принадлежит ровно одному отрезку и если результирующее разбиение будет представлено в виду последовательности целых чисел, то каждый следующий элемент этой последовательности будет строго больше, чем предыдущий.

Более формально: если результирующее разбиение последовательности — это \(t_1, t_2, \dots, t_k\), где \(k\) — количество элементов в разбиении, то для каждого \(i\) от \(1\) до \(k-1\) должно выполняться условие \(t_{i} < t_{i + 1}\) (используется численное сравнение, то есть сравниваются численные интерпретации строк).

Например, если \(s=654\), то вы можете разбить ее на части \([6, 54]\) и это будет являться подходящим разбиением. Но если вы разобьете ее на части \([65, 4]\), то это будет являться плохим разбиением, потому что \(65 > 4\). Если \(s=123\), то вы можете разбить его на части \([1, 23]\) и \([1, 2, 3]\), но не на части \([12, 3]\).

Ваша задача — найти любое подходящее разбиение для каждого из \(q\) независимых запросов.

Входные данные

Первая строка входных данных содержит одно целое число \(q\) (\(1 \le q \le 300\)) — количество запросов.

Первая строка \(i\)-го запроса содержит одно целое число \(n_i\) (\(2 \le n_i \le 300\)) — количество цифр в \(i\)-м запросе.

Вторая строка \(i\)-го запроса содержит одну строку \(s_i\) длины \(n_i\), состоящую только из цифр от \(1\) до \(9\).

Выходные данные

Если последовательность цифр \(i\)-го запроса не может быть разбита на хотя бы две части способом, описанном в условии задачи, выведите единственную строку «NO» для этого запроса.

Иначе в первой строке ответа на этот запрос выведите «YES», во второй строке выведите \(k_i\) — количество элементов в вашем разбиении последовательности \(i\)-го запроса и в третьей строке выведите \(k_i\) строк \(t_{i, 1}, t_{i, 2}, \dots, t_{i, k_i}\) — ваше разбиение. Части должны быть выведены в порядке следования цифр в заданной строке. Это означает, что если записать выведенные подстроки одну за другой, сохранив их порядок, то получится строка \(s_i\).

Посмотрите в примеры для лучшего понимания.


Примеры
Входные данныеВыходные данные
1 4
6
654321
4
1337
2
33
4
2122
YES
3
6 54 321
YES
3
1 3 37
NO
YES
2
21 22

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя