// inputに入力データ全体が入る
function Main(input) {
    // 1行目がinput[0], 2行目がinput[1], …に入る
    input = input.split("\n");
    tmp0 = input[0].split(" ");
    N = Number(tmp0[0]);
    M = Number(tmp0[1]);
    A = input[1].split(" ").map(str => parseInt(str,10));
    // console.log(A)
    A = A.sort((a, b) => a-b)
    // console.log(A)

    BCdict=[]
    for(var i=1; i<=M;i++){
        tmp = input[i+1].split(" ")
        // tmp[0] // Bi
        // tmp[1] // Ci
        obj = {"value": Number(tmp[1]), "count": Number(tmp[0])}
        BCdict.push(obj)
    }
    // console.log(BCdict)
    BCdict = BCdict.sort((a,b) => b.value - a.value)
    // console.log(BCdict)

    // BCarray = []
    // for(var i=0; i < BCdict.length; i++)
    // {
    //     BCarray = BCarray.concat(Array.apply(null, Array(BCdict[i].count)).map(function(){return BCdict[i].value}))
    // }
    // // console.log(BCarray)

    // for(var i=0; i < BCarray.length; i++)
    // {
    //     if(BCarray[i] > A[i]){
    //         A[i] = BCarray[i]
    //     }else{
    //         break
    //     }
    // }

    dictIndex = 0
    dictCount = 0    
    for(var i=0; i < A.length; i++)
    {
        var value = BCdict[dictIndex].value
        if(value > A[i])
        {
            A[i] = value
            dictCount++
            if(dictCount == BCdict[dictIndex].count){
                dictIndex++
                dictCount=0
                if(dictIndex == BCdict.length){
                    break
                }
            }
        }else{
            break
        }
    }

    
    var ans=0
    for(var i=0; i < A.length; i++)
    {
        ans += A[i]
    }
    console.log(ans)
  }
  //*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
  Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//   Main("3 2\n5 1 4\n2 3\n1 5\n");