Число при f (93) в ряду Фибоначчи имеет отрицательное значение, как?

Я пытаюсь распечатать ряд Фибоначчи до 'N' чисел. Все работает согласно ожиданиям до f (92), но когда я пытаюсь получить значение f (93), значения получаются отрицательными: «-6246583658587674878». Как это могло быть возможно? В чем ошибка в логике ниже?

public long fibo(int x){
    long[] arr = new long[x+1];
    arr[0]=0;
    arr[1]=1;
    for (int i=2; i<=x; i++){
        arr[i]=arr[i-2]+arr[i-1];
    }
    return arr[x];
}

f(91) = 4660046610375530309
f(92) = 7540113804746346429    
f(93) = -6246583658587674878

Это из-за типа данных? Какой еще тип данных я должен использовать для печати рядов Фибоначчи до N чисел? N может быть любым целым числом в диапазоне [0,10 000 000].