#input of int(split by space)
def get_i()
  return gets.chomp.split(" ").map(&:to_i)
end
#input of float(split by space)
def get_f()
  return gets.chomp.split(" ").map(&:to_f)
end
#input of string(split by space)
def get()
  return gets.chomp.split(" ")
end
#input of string(split per one character)
def get_nsp()
  return gets.chomp.split("")
end
#yes or no decision
def yn_judge(bool,y="Yes",n="No")
  return bool ? y : n 
end
#create of array
def array(size1,init=nil,size2=-1)
  if size2==-1
    return Array.new(size1){init}
  else
    return Array.new(size2){Array.new(size1){init}}
  end
end

def max(a,b)
    return a>b ? a : b
end

def min(a,b)
    return a>b ? b : a
end

INF=Float::INFINITY

class BIT
    attr_accessor:bit,:n
    def initialize(n)
        @n=n
        @bit=array(@n+1,0)
    end

    def add(i,x)
        while i<=@n
          @bit[i]+=x
          i+=i&-i
        end
    end

    def sum(i)
        s=0
        while i>0
            s+=@bit[i]
            i-=i&-i
        end
        return s
    end
end
MOD=10**9+7
N,K=get_i
A=get_i
ans=0
kind={}
A.sort.each do|a|
    kind[a]=0 if kind[a].nil?
    kind[a]+=1
end
bit=BIT.new(A.max)
N.times do|i|
    ans+=i-bit.sum(A[i])
    bit.add(A[i],1)
end
ans*=K
ans%=MOD
i=1
kind.each do|key,val|
  break if kind.size==i
  ans+=(K-1)*K/2*(N-i)*val 
  ans%=MOD
  i+=1
end
puts ans