810975
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

夜吹说他在2021年8月10日这一天在酒馆战棋中打了 n 局,吃了 m 局鸡(获胜),且其中 k 局鸡是连着吃的。请你简单判断一下他这么说是瞎编的还是有依据的。



如果存在至少一种 n 局对战、m 局获胜且最高 k 连胜的可能性(可以有多次达到 k 连胜),则夜吹是有依据的,请你先输出一行 "YES" 表示对世界冠军的肯定,然后输出其任意一种可能的对战结果来证明他没有吹牛。
否则请委婉的输出一行 "NO" 。

输入描述:

输入只有一行,三个整数 nmk (1 \leq n\leq 10^5, 0\leq k\leq m\leq n),分别表示总对局数,获胜数以及最高连胜。

输出描述:

如果存在至少一种合法的答案,请在第一行输出一个 "YES",并在第二行输出一个长度为 n01 字符串,其中第 i 个字符为 '1'/'0' 代表夜吹第 i 局战斗 获胜/失败 。要求夜吹恰好获胜 m 次,且最长连胜恰好为 k 局。如果有多种合法的答案,可以任意输出其中一种。

如果不存在合法的答案,则输出一行一个 "NO"。
示例1

输入

复制
9 7 5

输出

复制
YES
110011111
示例2

输入

复制
9 9 5

输出

复制
NO

说明

如果夜吹今天9局9鸡,则一定是9连鸡,而不是5连鸡。
示例3

输入

复制
6 4 1

输出

复制
NO