MOD = 10**9+7



def resolve():

  ans = 0

  q1 = 0

  n, k = list(map(int, input().split()))

  a = list(map(int, input().split()))

  c = [0] * n  # 自分より小さい値が全体に何個あるか

  for i in range(n):

    for j in range(i, n):

      if a[i] > a[j]:

        q1 += 1  



  ans = q1 * k % MOD



  q2 = 0

  for i in range(n):

    for j in range(n):

      if a[i] > a[j]:

        q2 += 1



  s = (k * (k - 1)) // 2

  s %= MOD



  ans += (s * q2) % MOD



  print((int(ans % MOD)))

  return  



if __name__ == "__main__":

  resolve()

def resolve():

  mod = 1000000007

  n, k = list(map(int, input().split()))

  a = list(map(int, input().split()))

  x = 0

  # A の転倒数を求める

  for i in range(n):

    for j in range(i+1, n):

      if a[i] > a[j]:

        x += 1

  # A のすべての数字に対して，A内に自分より小さいものが何個あるか

  y = 0

  for i in range(n):

    for j in range(n):

      if a[i] > a[j]:

        y += 1

  ans = (x * k) % mod

  # 1 ~ k の和 * y

  ans += (((k-1) * (k)) // 2) * y % mod

  ans %= mod



  print(ans)

  return



if __name__ == "__main__":

  resolve()

MOD = 10**9 + 7


def resolve():
    ans = 0
    q1 = 0
    n, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    c = [0] * n  # 自分より小さい値が全体に何個あるか
    for i in range(n):
        for j in range(i, n):
            if a[i] > a[j]:
                q1 += 1
    ans = q1 * k % MOD
    q2 = 0
    for i in range(n):
        for j in range(n):
            if a[i] > a[j]:
                q2 += 1
    s = (k * (k - 1)) // 2
    s %= MOD
    ans += (s * q2) % MOD
    print((int(ans % MOD)))
    return


if __name__ == "__main__":
    resolve()

def resolve():
    mod = 1000000007
    n, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    x = 0
    # A の転倒数を求める
    for i in range(n):
        for j in range(i + 1, n):
            if a[i] > a[j]:
                x += 1
    # A のすべての数字に対して，A内に自分より小さいものが何個あるか
    y = 0
    for i in range(n):
        for j in range(n):
            if a[i] > a[j]:
                y += 1
    ans = (x * k) % mod
    # 1 ~ k の和 * y
    ans += (((k - 1) * (k)) // 2) * y % mod
    ans %= mod
    print(ans)
    return


if __name__ == "__main__":
    resolve()

-MOD = 10**9 + 7 - - -    ans = 0 -    q1 = 0 +    mod = 1000000007 -    c = [0] * n  # 自分より小さい値が全体に何個あるか +    x = 0 +    # A の転倒数を求める -        for j in range(i, n): +        for j in range(i + 1, n): -                q1 += 1 -    ans = q1 * k % MOD -    q2 = 0 +                x += 1 +    # A のすべての数字に対して，A内に自分より小さいものが何個あるか +    y = 0 -                q2 += 1 -    s = (k * (k - 1)) // 2 -    s %= MOD -    ans += (s * q2) % MOD -    print((int(ans % MOD))) +                y += 1 +    ans = (x * k) % mod +    # 1 ~ k の和 * y +    ans += (((k - 1) * (k)) // 2) * y % mod +    ans %= mod +    print(ans)