Time Limit: 2 sec / Memory Limit: 256 MB
問題
背景
うなぎ王国のお姫様は,データ構造が大好きだ.そこで王様は,お姫様の誕生日に「バイナリヒープを表現した配列」をたくさんプレゼントしようと準備していた.
「バイナリヒープを表現した配列」とは,配列の第 要素の値は,第要素が存在すればそれより真に小さく,同様に第要素が存在すればそれよりも真に小さい,という条件を全ての要素で満たす配列のことを言う.たとえば はバイナリヒープを表現した配列である.なぜならば,第要素であるは第要素と第要素であるとよりも小さく,第要素であるは第要素と第要素のとよりも小さい…,という条件がすべて成り立っている.このような配列は,第要素の子が第要素と第要素であるようなツリー構造と考えると,親の方が常に値が小さいという特徴を持つ.お姫様は,この特徴を活用してソートなど様々なアルゴリズムの効率化をするのにご執心なのだ.

さて,ところが不運なことに,王様はせっかく作った「バイナリヒープを表現した配列」を落として壊してしまった!今や王様の手元には,「バイナリヒープを表現した配列」の後半部分しか手元に残っていない.一刻も早く元の「バイナリヒープを表現した配列」を復元しなくてはならない.王様は,元の配列の要素はすべて非負整数で,重複する値はなかったことを覚えている.この情報を手がかりに配列を復元して欲しい.
課題
すなわち,入力 ... に対し,次を満たす配列 ... を求め,その長さ を答えとして出力して欲しい.
- は全て 以上の整数
- 配列の要素は全て互いに異なる.つまり, ならば
- バイナリヒープを表現した配列となっている.つまり,常に かつ
- が の接尾辞となっている.つまり,全ての に対し,
複数の可能性がある場合は最小の を答えること.条件を満たす が存在しない場合は と答えること.
配点
入力
入力は以下の形式で与えられる.
...
制約
入力中の各変数は以下の制約を満たす.
- \(0 \leq A_{i} \leq 109\)
- は互いに相異なる非負整数
出力
問題の解を行に出力せよ.
入力例1Copy
3 4 2 3
入力例1に対する出力例 Copy
5
は,(第要素)がや(第,第要素)よりも大きいので,条件を満たさない. の形の配列も,(第要素)が(第要素)よりも大きいので,にどんな値を入れても条件を満たさない. が, を接尾辞に持ちバイナリヒープを表現した最短の配列である.
入力例2Copy
3 3 1 2
入力例2に対する出力例 Copy
-1
や は配列の要素に重複がないこと,非負整数であることなどに反するため,条件を満たさないことに注意せよ.
入力例3Copy
4 10 20 40 30
入力例3に対する出力例 Copy
4
入力例4Copy
4 9 2 3 6
入力例4に対する出力例 Copy
8