#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using ll = long long;
using namespace atcoder;
using mint = modint;
int main() {
	mint::set_mod((ll)1e9 + 7);
	int N;cin >> N;
	vector<ll> S(N + 1, 0);
	for (int i = 1;i <= N;i++) {
		ll a;cin >> a;
		S[i] = S[i - 1] ^ a;
	}
	vector<mint> dp(N + 1, 0);
	dp[0] = 1;
	map<ll, int> pos;
	vector<mint> sdp(N + 1, 0);
	sdp[0] = 1;
	for (int i = 1;i <= N - 1;i++) {
		dp[i] = sdp[i - 1] - (pos.find(S[i]) == pos.end() ? 0 : sdp[pos[S[i]] - 1]);
		pos[S[i]] = i;
		sdp[i] = sdp[i - 1] + dp[i];
	}
	cout << sdp[N - 1].val() << endl;

}