All possible combinations of 0 and 1

//all true case not being printed.
// Please help me draw the recursion tree
#include
using namespace std;
//final basically provides us with all combination of after bl[s]
void final( int s, bool bl[], int n){
if(s<=n-1)
{
bl[s]=true;

for(int i=0; i<n; i++)
cout<<bl[i]<<", ";
cout<<endl;
final(s+1, bl, n); //provides us with remaining combination with b[s] as true
//and ends with

bl[s]=false; //suppose that possibility when bl[s] is false
final(s+1, bl, n); //provides us with all possibility with bl[s] as false
}

}

int main()
{
int n; cin>>n;
bool bl[n];
for(auto &i : bl) //set all value of bl to false
i=false;
final(0,bl,n);
}