お世話になります。

1≤A≤B≤10^18,1≤C,D≤10^9
であるときにコンソール上から数値を入力しようとしたのですが、
うまく各変数に入っていないようです。小さな値なら入るのですが、
大きくなると入りません。どのようにすれば、大きな値も入るでしょうか。
以下が書いたコードです。windows上で実行しております。
よろしくお願いいたします。

#include<iostream>
using namespace std;
int main(){
    long A,B,C,D;

    cin >> A >> B >> C >> D;

    printf("%ld,%ld,%ld,%ld",A,B,C,D);
    return 0;
}