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

x = tuple(map(int, input().split()))



# o <-tel-> o --walk-- 0 -- walk-- o <=tel-> ...

# 左から順にa,b最小コストを選択

print((sum(min((after - prev) * a, b) for prev, after in zip(x, x[1:]))))



# http://xxxasdfghjk999.hatenablog.jp/entry/2018/07/29/214705

# 最小全域木だとTLEする

# 徒歩区間を連結できるので、貪欲に決まる

def main():

    N, A, B = list(map(int, input().split()))

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



    ret = 0

    curr = next(X)

    for x in X:

        ret += min((x - curr) * A, B)

        curr = x

    print(ret)





if __name__ == '__main__':

    main()

n, a, b = list(map(int, input().split()))
x = tuple(map(int, input().split()))
# o <-tel-> o --walk-- 0 -- walk-- o <=tel-> ...
# 左から順にa,b最小コストを選択
print((sum(min((after - prev) * a, b) for prev, after in zip(x, x[1:]))))
# http://xxxasdfghjk999.hatenablog.jp/entry/2018/07/29/214705
# 最小全域木だとTLEする
# 徒歩区間を連結できるので、貪欲に決まる

def main():
    N, A, B = list(map(int, input().split()))
    X = list(map(int, input().split()))
    ret = 0
    curr = next(X)
    for x in X:
        ret += min((x - curr) * A, B)
        curr = x
    print(ret)


if __name__ == "__main__":
    main()

-n, a, b = list(map(int, input().split())) -x = tuple(map(int, input().split())) -# o <-tel-> o --walk-- 0 -- walk-- o <=tel-> ... -# 左から順にa,b最小コストを選択 -print((sum(min((after - prev) * a, b) for prev, after in zip(x, x[1:])))) -# http://xxxasdfghjk999.hatenablog.jp/entry/2018/07/29/214705 -# 最小全域木だとTLEする -# 徒歩区間を連結できるので、貪欲に決まる +def main(): +    N, A, B = list(map(int, input().split())) +    X = list(map(int, input().split())) +    ret = 0 +    curr = next(X) +    for x in X: +        ret += min((x - curr) * A, B) +        curr = x +    print(ret) + + +if __name__ == "__main__": +    main()