好排列
题号:NC298870
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

Bingbong 定义一个长度为 n 的排列为好排列当且仅当该排列满足恰好存在 n 个子区间是一个排列。

现在请你求出对于长度为 n 的排列有多少种不同的排列方案是好排列,结果对 10^9+7 取模。

排列:对于一个长度 k 的排列指的是由 1\sim k 的元素组成,且每个元素只出现过一次。

输入描述:

一个整数 n(1\leqq n\leqq 10^9),表示排列长度。

输出描述:

一个整数,表示长度为 n 的好排列个数,结果对 10^9+7 取模。
示例1

输入

复制
3

输出

复制
4

说明

长度为 3 的排列共 6种,分别为:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1],其中 [1,2,3],[2,1,3],[3,1,2],[3,2,1] 为 4 种满足条件的排列。