java public static int run(int [] a);
*/
#include <stdio.h>
#include <stdlib.h>
#define M 1000000007
int run(const int *a,int n)
{
long long SubArray[120] = {0};
int LastIndex[120] = {0};
int iter = 0;
for(iter = 1; iter <= n; iter++)
{
switch(LastIndex[a[iter - 1]])
{
case 0:
{
SubArray[iter] = (2 * SubArray[iter - 1] + 1) % M;
break;
}
default:
{
SubArray[iter] = (2 * SubArray[iter - 1] - SubArray[LastIndex[a[iter - 1]] - 1] + M) % M;
break;
}
}
LastIndex[a[iter - 1]] = iter;
}
return SubArray[n] % M;
}
int main(void)
{
//int a = {1, 2, 2, 3 ,3};
int a = {1, 2, 3 , 2};
printf("the result is %d\n", run(a, 4));
return 0;
}