include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<math.h>
#include<iomanip>
#include<numeric>
#include<list>
#include<deque>
#include<queue>
using namespace std;
int main()
{
int n;
while (cin>>n)
{
vector <int> numVec; //存儲氣球的個數
vector <int> colors; //存儲顏色
int num;
cin >> num;
colors.push_back(num);
numVec.push_back(1);//當有零個氣球時
numVec.push_back(1);//當有一個氣球時
for (int i = 1;i < n;i++)
{
int num;
cin >> num;
int cp = colors.size()-1;
int np = numVec.size()-1;
long long p = numVec[np];
// cout << "概率:" << p << endl;
for (int j = colors.size()- 1;j >= 0;j--)
{
if (colors[j] != num)
{
bool flag = true;
for (int k = j+1;k < colors.size();k++)//前面有任何一個氣球和j相等則不能把氣球j和后面的氣球分成一組
{
if (colors[k] == colors[j])
{
flag = false;
}
}
if (flag == true)
{
p += numVec[np - cp + j - 1];
}
else
{
break;
}
}
else
{
break;
}
}
numVec.push_back(p%1000000007);//不要忘了取余數!!!!!!
// cout << "概率:" << p << endl;
colors.push_back(num);
}
cout << numVec[numVec.size() - 1] << endl;
}
return 0;
}