#define HAVE_STRUCT_TIMEPSEC
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int a[100007],inv[100007];
int Pow(int p,int q){
    int s=1;
    for(;q;q>>=1,p=1ll*p*p%mod)
        if(q&1) 
            s=1ll*s*p%mod;
    return s;
}
int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;++i) 
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    for(int i=1;i<=n;++i) 
        inv[i]=Pow(i,mod-2); 
    long long p=1,ans=a[k];
    for(int i=k+1;i<=n;++i){
         p=p*(i-1)%mod;
         p=p*inv[i-k]%mod;
         ans=(ans+a[i]*p%mod)%mod;
    }
    ans-=a[n-k+1];
    p=1;
    for(int i=k+1;i<=n;++i){
         p=p*(i-1)%mod;
         p=p*inv[i-k]%mod;
         ans=(ans-a[n-i+1]*p%mod)%mod;
    }
    if(ans<0) 
        ans+=mod;
    printf("%d",ans);
}