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

题目描述

二叉树的定义是:
1. 除了根节点,其他节点有且仅有一个父节点。
2. 所有节点最少有 0 个孩子节点,最多有 2 个孩子节点。
3. 如果某个节点没有孩子节点,我们称其为 叶子节点。
4. 如果节点数量为 n ,那么边的数量为 n-1
5. 将节点之间的边长视为 1 ,则该二叉树的深度为 所有叶子节点到根节点的距离 的最大值。

202树的定义是:
1. 202树 是一棵 二叉树。
2. 叶子节点 没有孩子节点。
3. 非叶子节点 必须有两个孩子节点。

给定 n 个尚未连接的节点,你是否能通过新增 n-1 条边来连接 n 个节点,构造出一棵 202树 ?
如果能,输出所有可能的 202树 的 最大深度 。
否则,输出 -1 ,表示无法构造出任何一棵 202树 。

输入描述:

第一行有一个整数 n\ (\ 1 \leq n \leq {10}^9\ ) ,代表节点个数。

输出描述:

输出一个整数,代表 最大深度 ,或者用 -1 表示不可能构造出 202树。
示例1

输入

复制
5

输出

复制
2

说明

如图所示