/* Below global variable is declared in code for modulo arithmetic
const long long unsigned int MOD = 1000000007; */
/* Link list Node/
struct Node
{
bool data; // NOTE data is bool
struct Node* next;
}; */
// Should return decimal equivalent modulo 1000000007 of binary linked list
long long unsigned int decimalValue(struct Node *head)
{
// Your Code Here
int cnt=-1;
long long MOD=1000000007;
Node *tmp=head;
bool arr[200];
while(tmp)
{
cnt+=1;
arr[cnt]=tmp->data;
tmp=tmp->next;
}
long long mult=1;
long long res;
if(arr[cnt])
res=1;
else
res=0;
if(cnt>0)
for(int i=cnt-1;i>=0;i--)
{
mult=(mult*2)%MOD;
mult%=MOD;
if(arr[i])
res=(res+mult)%MOD;
}
return res;
}