package main
var ans int=0
var mod int=1000000007
func merge(data []int,l,mid,r int){
tmp:=make([]int,r-l+1)
idx:=0
i:=l
j:=mid+1
for ;i<=mid&&j<=r;{
if data[i]<=data[j]{
tmp[idx]=data[i]
i++
idx++
}else{
ans+=(mid-i+1)
ans%=mod
tmp[idx]=data[j]
j++
idx++
}
}
for i<=mid{
tmp[idx]=data[i]
idx++
i++
}
for j<=r{
tmp[idx]=data[j]
idx++
j++
}
for k:=0;k<r-l+1;k++{
data[l+k]=tmp[k]
}
}
func mergeSort(data []int,l,r int){
if l<r{
mid:=(l+r)>>1
mergeSort(data,l,mid)
mergeSort(data,mid+1,r)
merge(data,l,mid,r)
}
}
func InversePairs( data []int ) int {
// write code here
mergeSort(data,0,len(data)-1)
return ans
}