AT_arc190_a [ARC190A] Inside or Outside
Description
整数列 $ x = (x_1, \ldots, x_N) $ があり, $ x_1=\cdots=x_N=0 $ で初期化されています.
あなたはこの整数列について, $ M $ 回の操作を行います. $ i $ 回目の操作では, $ 1\leq L_i\leq R_i\leq N $ を満たす整数の組 $ (L_i, R_i) $ が与えられるので,以下の $ 3 $ つのうち**ちょうど** $ 1 $ つを行います.
- 操作 $ 0 $ :何もしない.この操作にはコストが $ 0 $ かかる.
- 操作 $ 1 $ : $ 1\leq j\leq N $ を満たす各整数 $ j $ に対して, $ L_i\leq j\leq R_i $ を**満たす**ならば $ x_j=1 $ と定める.この操作にはコストが $ 1 $ かかる.
- 操作 $ 2 $ : $ 1\leq j\leq N $ を満たす各整数 $ j $ に対して, $ L_i\leq j\leq R_i $ を**満たさない**ならば $ x_j=1 $ と定める.この操作にはコストが $ 1 $ かかる.
あなたの目標は,最終的に $ x_1=\cdots=x_N=1 $ が成り立つようにすることです.この目標が達成できるか否かを判定してください.目標が達成可能な場合には,そのような方法のうち操作にかかるコストの総和が最小となるものをひとつ答えてください.
Input Format
入力は以下の形式で標準入力から与えられます.
> $ N $ $ M $ $ L_1 $ $ R_1 $ $ \vdots $ $ L_M $ $ R_M $
Output Format
目標が達成不可能な場合には `-1` と出力してください.
目標が達成可能な場合には,そのような方法のうち操作にかかるコストの総和が最小となるものを,コストの総和の最小値を $ K $ , $ i $ 回目で行う操作の種類( $ 0 $ または $ 1 $ または $ 2 $ )を $ \mathrm{op}_i $ として,次の形式で出力してください.
> $ K $ $ \mathrm{op}_1 $ $ \cdots $ $ \mathrm{op}_M $
操作にかかるコストの総和を最小化する方法が複数存在する場合には,そのどれを出力しても正解となります.
Explanation/Hint
### Sample Explanation 1
出力例では $ x $ は次のように変化します.
- はじめ $ x=(0,0,0,0,0) $ である.
- $ 1 $ 回目の操作で操作 $ 2 $ を行う. $ x_1,x_5 $ が $ 1 $ になり, $ x=(1,0,0,0,1) $ になる.
- $ 2 $ 回目の操作で操作 $ 0 $ を行う. $ x=(1,0,0,0,1) $ になる.
- $ 3 $ 回目の操作で操作 $ 1 $ を行う. $ x_1,x_2,x_3,x_4 $ が $ 1 $ になり, $ x=(1,1,1,1,1) $ になる.
- $ 4 $ 回目の操作で操作 $ 0 $ を行う. $ x=(1,1,1,1,1) $ になる.
### Constraints
- $ 1\leq N\leq 1000000 $
- $ 1\leq M\leq 200000 $
- $ 1\leq L_i\leq R_i\leq N $
- 入力される値はすべて整数