'use strict'
function main(input) {
  input = input.split('\n')
  const N = input[0]
  const an = input[1].split(' ').map(str => parseInt(str))
  an.sort((a, b) => a - b) // 数値が小さい順に並び替え
  const m = Math.pow(10, 9) + 7

  // 組み合わせの配列を取得
  const anPairs = pairs(an)

  // 組み合わせの和をmod10^9+7で求める
  const ans = sumPairs(anPairs) % m

  console.log(ans)
}

// 組み合わせの配列を取得
const pairs = (list) => {
  if(!list.length) return
  
  if(list.length === 1) return [list]

  let res = []

  let tmpList
  list.forEach((e, i) => {
    tmpList = [...list]
    tmpList.splice(0, i + 1)

    tmpList.forEach(f => {
      res.push([e, f])
    })
  })

  return res
}

// 組み合わせの積の和を取得
const sumPairs = (pairs) => {
  let res = 0
  pairs.forEach(e => {
    res += e[0] * e[1]
  })
  return res
}

main(require("fs").readFileSync("/dev/stdin", "utf8"))