Problem F 合并石子
一共有 堆石子,故合并时产生 种情况;
次合并时共有 堆石子,故选取两堆的期望和为 ;
故消耗体力总和为

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define M 1000000007

ll ksm(ll a,ll p){
    ll res=1;
    while(p){if(p&1){res=res*a%M;}a=a*a%M;p>>=1;}return res;
}

int i;
ll n,res,tmp;

int main(){
    scanf("%d",&n);
    for(i=2;i<=n;i++){
        res+=ksm(i,M-2)*n%M;
    }
    for(i=1;i<=n-1;i++){
        res=res*i%M;
    }
    printf("%lld",res*2%M);
}