这是一道比较简单的组合数学题
首先我们这么想 在n个位置选出两个位置来按放 1 0 为 (nn-1)/2
其他位置随便放 结果为 2^n-2
最终结果为 (2^n-2)
((n*n-1)/2) 然后在计算中取模
仔细想一想这样是将所有情况全部都计算了(想不明白建议手推一下

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll const mod=1e9+7;

ll quickpow(ll a, ll b) {///模板
    if (b < 0) return 0;
    ll ret = 1;
    a %= mod;
    while(b) {
        if (b & 1) ret = (ret * a) % mod;
        b >>= 1;
        a = (a * a) % mod;
    }
    return ret;
}
ll n,k;
int main()
{
  scanf("%lld",&n);
  k=(((((n%mod)*((n-1)%mod))/2)%mod)*quickpow(2,n-2))%mod;///取模
  printf("%lld",k);
    return 0;
}