#include <bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << '\n'
using namespace std;
typedef long long ll;
const int maxn=1e5+7;
const ll mod=1e9+7;
ll n, k;
ll a[maxn], fac[maxn], invfac[maxn], c[maxn];

ll pow(ll x,ll n)
{
    ll res=1;
    x%=mod;
    while(n)
    {
        if(n&1) res=res*x%mod;
        x=x*x%mod;
        n>>=1;
    }
    return res;
}
void init()
{
    fac[0]=1;
    for(int i=1; i<=n; i++) fac[i]=(fac[i-1]*(ll)(i))%mod;
    for(int i=0; i<=n; i++) invfac[i]=pow(fac[i], mod-2);
    for(int i=k-1; i<=n; i++) c[i]=((fac[i]*invfac[k-1])%mod*invfac[i-(k-1)])%mod;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>k;
    init();
    for(int i=1; i<=n; i++) cin>>a[i];
    sort(a+1, a+1+n);
    ll ans=0;
    for(int i=1; i<=n; i++) ans+=((c[i-1]-c[n-i])*a[i])%mod, ans%=mod;
    ans=(ans+mod)%mod;
    cout<<ans<<endl;
    return 0;
}
