stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const int maxn=1e5+10;

const ll mm=1e9+7;

int sp[maxn],vis[maxn];

int main()

{

    int n;

    cin>>n;

    int flag=0;

    memset(vis,0,sizeof(vis));

    for(int i=1;i<=n;++i){

        cin>>sp[i];

        vis[sp[i]]++;

    }

    if(n%2==1)

    {

        for(int i=0;i<n;i+=2)

        {

            if(i==0)

            {

                if(vis[i]!=1)

                {

                    flag=1;

                    break;

                }

            }

            else

            {

                if(vis[i]!=2)

                {

                    flag=1;

                    break;

                }

            }

        }

        if(flag==1)

            cout<<0<<endl;

        else

        {

            ll res=1;

            for(int i=1;i<=(n-1)/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }

    }

    else if(n%2==0)

    {

        int flag=0;

        for(int i=1;i<n;i+=2)

        {

            if(vis[i]!=2)

            {

                flag=1;

                break;

            }

        }

        if(flag==0)

        {

            ll res=1;

            for(int i=1;i<=n/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }



        else cout<<0<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3861455302283212x):
#include <bits/stdc++.h>

using namespace std;



const long long MOD = 1e9 + 7;



long long pow_mod(int a, int n)

{

    if(!n)

        return 1;

    long long res = pow_mod(a, n / 2);

    res = res * res;

    res %= MOD;

    if(n % 2) 

        res *= a;

    res %= MOD;

    return res;

}



int main()

{

    int n;

    while(cin >> n)

    {

        vector<int> v(n + 1), cnt(n + 1);

        for(int i = 1; i <= n; i ++)

        {

            cin >> v[i];

            cnt[abs((i - 1) - (n - i))] ++;

        }

        bool ok = true;

        for(int i = 1; i <= n;i ++)

        {

            if(!cnt[v[i]])

            {

                ok = false;

                break;

            }

            cnt[v[i]] --;

        }

        if(!ok)

            cout << 0 << endl;

        else

        cout << pow_mod(2, n / 2) << endl;

    }

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

int a[100500];

int N;

long long int ans;

int main()

{

        scanf("%d",&N);

        int n;

        ans=1;

        memset(a,0,sizeof(a));

        for(int i=1;i<=N;i++)

        {

            scanf("%d",&n);

            a[n]++;

            if(n==0&&a[n]==1)

            {

                ans*=1;

            }

            else if(n==0&&a[n]>1)

            {

                ans=0;

                break;

            }

            else if(a[n]==1)

            {

                ans*=2;

            }

            else if(a[n]>2)

            {

                ans=0;

                break;

            }

            ans%=1000000007;

        }

        printf("%lld\n",ans);

        return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3586101138984514x):


#include<bits/stdc++.h>

#include <ext/pb_ds/assoc_container.hpp>

#include <ext/pb_ds/tree_policy.hpp>

#define F first

#define S second

#define pi acos(-1)

using ll = long long;

using namespace std;

using namespace __gnu_pbds;

using vl = vector<ll>;

using pll =  pair<ll,ll>;

const ll mod = 1000000007;

const ll infi = 1000000000000000;

const ll md = 998244353;

typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;





ll power(ll x,ll y){

    ll res = 1;

    while(y){

        if(y&1)

            res = (res*x)%md;

        x = (x*x)%md;

        y = y/2;

    }

    return res;

}



void solve(){

    int n;

    cin>>n;

    vl a(n);



    for(int i=0;i<n;i++)

    	cin>>a[i];

    ll ans=1;

    sort(a.rbegin(),a.rend());

    int num = n - 1;



    for(int i=0;i+1<n;i+=2){

    	//cout<< a[i] << " " << a[i+1] << " " << num<< endl;

    	if(a[i] == num && a[i+1] == num)

    		ans = (ans * 2)%mod;

    	else{

    		cout<<0;

    		return;

    	}

    	num -= 2;

    }



    if (n % 2 == 1&&a[n-1] != 0)

    {

    	cout<<0;

    }

    else

    	cout<<ans;

}

 

int main()

{

    





    ios_base::sync_with_stdio(false);

    cin.tie(NULL);

    cout.tie(NULL);

    //int n; cin>>n; for (int i = 0; i < n; ++i)

    solve();

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const int maxn=1e5+10;

const ll mm=1e9+7;

int sp[maxn],vis[maxn];

int main()

{

    int n;

    cin>>n;

    int flag=0;

    memset(vis,0,sizeof(vis));

    for(int i=1;i<=n;++i){

        cin>>sp[i];

        vis[sp[i]]++;

    }

    if(n%2==1)

    {

        for(int i=0;i<n;i+=2)

        {

            if(i==0)

            {

                if(vis[i]!=1)

                {

                    flag=1;

                    break;

                }

            }

            else

            {

                if(vis[i]!=2)

                {

                    flag=1;

                    break;

                }

            }

        }

        if(flag==1)

            cout<<0<<endl;

        else

        {

            ll res=1;

            for(int i=1;i<=(n-1)/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }

    }

    else if(n%2==0)

    {

        int flag=0;

        for(int i=1;i<n;i+=2)

        {

            if(vis[i]!=2)

            {

                flag=1;

                break;

            }

        }

        if(flag==0)

        {

            ll res=1;

            for(int i=1;i<=n/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }



        else cout<<0<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3689023499322017x):


#include<bits/stdc++.h>

#include <ext/pb_ds/assoc_container.hpp>

#include <ext/pb_ds/tree_policy.hpp>

#define F first

#define S second

#define pi acos(-1)

using ll = long long;

using namespace std;

using namespace __gnu_pbds;

using vl = vector<ll>;

using pll =  pair<ll,ll>;

const ll mod = 1000000007;

const ll infi = 1000000000000000;

const ll md = 998244353;

typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;





ll power(ll x,ll y){

    ll res = 1;

    while(y){

        if(y&1)

            res = (res*x)%md;

        x = (x*x)%md;

        y = y/2;

    }

    return res;

}



void solve(){

    int n;

    cin>>n;

    vl a(n);



    for(int i=0;i<n;i++)

    	cin>>a[i];

    ll ans=1;

    sort(a.rbegin(),a.rend());

    int num = n - 1;



    for(int i=0;i+1<n;i+=2){

    	//cout<< a[i] << " " << a[i+1] << " " << num<< endl;

    	if(a[i] == num && a[i+1] == num)

    		ans = (ans * 2)%mod;

    	else{

    		cout<<0;

    		return;

    	}

    	num -= 2;

    }



    if (n % 2 == 1&&a[n-1] != 0)

    {

    	cout<<0;

    }

    else

    	cout<<ans;

}

 

int main()

{

    





    ios_base::sync_with_stdio(false);

    cin.tie(NULL);

    cout.tie(NULL);

    //int n; cin>>n; for (int i = 0; i < n; ++i)

    solve();

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

int a[100500];

int N;

long long int ans;

int main()

{

        scanf("%d",&N);

        int n;

        ans=1;

        memset(a,0,sizeof(a));

        for(int i=1;i<=N;i++)

        {

            scanf("%d",&n);

            a[n]++;

            if(n==0&&a[n]==1)

            {

                ans*=1;

            }

            else if(n==0&&a[n]>1)

            {

                ans=0;

                break;

            }

            else if(a[n]==1)

            {

                ans*=2;

            }

            else if(a[n]>2)

            {

                ans=0;

                break;

            }

            ans%=1000000007;

        }

        printf("%lld\n",ans);

        return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3894679098851848x):
#include<iostream>

#include<math.h>

using namespace std;

int main()

{

	int i,n,d,res=1,x,c1=0,j;

	cin>>n;

	int a[n],c[n];

	for(i=1;i<=n;i++)

	{

		cin>>a[i];

		c[i]=0;

	}

	d=n/2;

	int q=1000000007;

	i=d;

	while(i--)

	{

		res=(res*2)%q;

	}

	for(i=1;i<=n;i++)

	{

		x=a[i];

		if(x==0)

		{

			c[1]++;

		}

		else

		{

			c[x]++;

		}

	}

	i=n-1;

	c1=0;

	if(n%2==0)

	{

		j=n/2;

		while(j--)

		{

			if(c[i]==2)

			{

				c1++;

				i=i-2;

			}

		}

		if(c1==d)

		{

			cout<<res<<endl;

		}

		else

		{

			cout<<0<<endl;

		}

	}

	else

	{

		j=n/2;

		while(j--)

		{

			if(c[i]==2&&i!=0)

			{

				c1++;

				i=i-2;

			}

		}

		if(c[1]==1)

		{

			c1++;

		}

		d=d+1;

		if(c1==d)

		{

			cout<<res<<endl;

		}

		else

		{

			cout<<0<<endl;

		}

	}

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const int maxn=1e5+10;

const ll mm=1e9+7;

int sp[maxn],vis[maxn];

int main()

{

    int n;

    cin>>n;

    int flag=0;

    memset(vis,0,sizeof(vis));

    for(int i=1;i<=n;++i){

        cin>>sp[i];

        vis[sp[i]]++;

    }

    if(n%2==1)

    {

        for(int i=0;i<n;i+=2)

        {

            if(i==0)

            {

                if(vis[i]!=1)

                {

                    flag=1;

                    break;

                }

            }

            else

            {

                if(vis[i]!=2)

                {

                    flag=1;

                    break;

                }

            }

        }

        if(flag==1)

            cout<<0<<endl;

        else

        {

            ll res=1;

            for(int i=1;i<=(n-1)/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }

    }

    else if(n%2==0)

    {

        int flag=0;

        for(int i=1;i<n;i+=2)

        {

            if(vis[i]!=2)

            {

                flag=1;

                break;

            }

        }

        if(flag==0)

        {

            ll res=1;

            for(int i=1;i<=n/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }



        else cout<<0<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3999939110856507x):
#include<iostream>

#include<math.h>

using namespace std;

int main()

{

	int i,n,d,res=1,x,c1=0,j;

	cin>>n;

	int a[n],c[n];

	for(i=1;i<=n;i++)

	{

		cin>>a[i];

		c[i]=0;

	}

	d=n/2;

	int q=1000000007;

	i=d;

	while(i--)

	{

		res=(res*2)%q;

	}

	for(i=1;i<=n;i++)

	{

		x=a[i];

		if(x==0)

		{

			c[1]++;

		}

		else

		{

			c[x]++;

		}

	}

	i=n-1;

	c1=0;

	if(n%2==0)

	{

		j=n/2;

		while(j--)

		{

			if(c[i]==2)

			{

				c1++;

				i=i-2;

			}

		}

		if(c1==d)

		{

			cout<<res<<endl;

		}

		else

		{

			cout<<0<<endl;

		}

	}

	else

	{

		j=n/2;

		while(j--)

		{

			if(c[i]==2&&i!=0)

			{

				c1++;

				i=i-2;

			}

		}

		if(c[1]==1)

		{

			c1++;

		}

		d=d+1;

		if(c1==d)

		{

			cout<<res<<endl;

		}

		else

		{

			cout<<0<<endl;

		}

	}

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

int a[100500];

int N;

long long int ans;

int main()

{

        scanf("%d",&N);

        int n;

        ans=1;

        memset(a,0,sizeof(a));

        for(int i=1;i<=N;i++)

        {

            scanf("%d",&n);

            a[n]++;

            if(n==0&&a[n]==1)

            {

                ans*=1;

            }

            else if(n==0&&a[n]>1)

            {

                ans=0;

                break;

            }

            else if(a[n]==1)

            {

                ans*=2;

            }

            else if(a[n]>2)

            {

                ans=0;

                break;

            }

            ans%=1000000007;

        }

        printf("%lld\n",ans);

        return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3590867005563187x):
#include<bits/stdc++.h>

using namespace std;

long long  modl(long long a, long long b, long long c) 

{

    long long res, t;

    res = 1 % c;

    t = a % c;

    while (b)

    {

        if (b & 1)

        {

            res = res * t % c;

        }

        t = t * t % c;

        b >>= 1;

    }

    return res;

}

int main()

{

    ios_base::sync_with_stdio(false);

    cin.tie(NULL);cout.tie(NULL);

    int n,temp=1,i;

    long long int var;

    cin>>n;

    long int mod=pow(10,9)+7;

    vector<long long int> a(n);

    if(n%2==0)

    {

    for(i=0;i<n;i++)

    {

        cin>>var;

        if(var%2==0)

        {temp=0;

        break;}

        else

        {

            a[var/2]++;

        }

        if(a[var/2]>2)

        {

            temp=0;

            break;

        }

    }

    }

    else

    {

    for(i=0;i<n;i++)

    {

        cin>>var;

        if(var%2!=0)

        {temp=0;

        break;}

        else

        {

            a[var/2]++;

        }

        if(a[var/2]>2)

        {

            temp=0;

            break;

        }

    }

    if(a[0]!=1)

    temp=0;

    }

    if(temp==0)

    {

        cout<<0;

    }

    else

    cout<<modl(2,(n/2),mod)%mod;

    

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const int maxn=1e5+10;

const ll mm=1e9+7;

int sp[maxn],vis[maxn];

int main()

{

    int n;

    cin>>n;

    int flag=0;

    memset(vis,0,sizeof(vis));

    for(int i=1;i<=n;++i){

        cin>>sp[i];

        vis[sp[i]]++;

    }

    if(n%2==1)

    {

        for(int i=0;i<n;i+=2)

        {

            if(i==0)

            {

                if(vis[i]!=1)

                {

                    flag=1;

                    break;

                }

            }

            else

            {

                if(vis[i]!=2)

                {

                    flag=1;

                    break;

                }

            }

        }

        if(flag==1)

            cout<<0<<endl;

        else

        {

            ll res=1;

            for(int i=1;i<=(n-1)/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }

    }

    else if(n%2==0)

    {

        int flag=0;

        for(int i=1;i<n;i+=2)

        {

            if(vis[i]!=2)

            {

                flag=1;

                break;

            }

        }

        if(flag==0)

        {

            ll res=1;

            for(int i=1;i<=n/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }



        else cout<<0<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3693825470021537x):
#include<bits/stdc++.h>

using namespace std;

long long  modl(long long a, long long b, long long c) 

{

    long long res, t;

    res = 1 % c;

    t = a % c;

    while (b)

    {

        if (b & 1)

        {

            res = res * t % c;

        }

        t = t * t % c;

        b >>= 1;

    }

    return res;

}

int main()

{

    ios_base::sync_with_stdio(false);

    cin.tie(NULL);cout.tie(NULL);

    int n,temp=1,i;

    long long int var;

    cin>>n;

    long int mod=pow(10,9)+7;

    vector<long long int> a(n);

    if(n%2==0)

    {

    for(i=0;i<n;i++)

    {

        cin>>var;

        if(var%2==0)

        {temp=0;

        break;}

        else

        {

            a[var/2]++;

        }

        if(a[var/2]>2)

        {

            temp=0;

            break;

        }

    }

    }

    else

    {

    for(i=0;i<n;i++)

    {

        cin>>var;

        if(var%2!=0)

        {temp=0;

        break;}

        else

        {

            a[var/2]++;

        }

        if(a[var/2]>2)

        {

            temp=0;

            break;

        }

    }

    if(a[0]!=1)

    temp=0;

    }

    if(temp==0)

    {

        cout<<0;

    }

    else

    cout<<modl(2,(n/2),mod)%mod;

    

    return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

int a[100500];

int N;

long long int ans;

int main()

{

        scanf("%d",&N);

        int n;

        ans=1;

        memset(a,0,sizeof(a));

        for(int i=1;i<=N;i++)

        {

            scanf("%d",&n);

            a[n]++;

            if(n==0&&a[n]==1)

            {

                ans*=1;

            }

            else if(n==0&&a[n]>1)

            {

                ans=0;

                break;

            }

            else if(a[n]==1)

            {

                ans*=2;

            }

            else if(a[n]>2)

            {

                ans=0;

                break;

            }

            ans%=1000000007;

        }

        printf("%lld\n",ans);

        return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.387978081091035x):
#include<iostream>

#include<cstdio>

#include<math.h>

using namespace std;

#define PI 3.1415927

#define mod 1000000007

long long n,ans=1;

int coun[100005],num[100005];

int main()

{

	int n,i,x,flag1,flag2 = 0;

	cin>>n;

	flag1 = n % 2;

	for(i=0;i<n;i++)

	{

		scanf("%d",&num[i]);

		coun[num[i]]++;

		if(num[i]%2==flag1||num[i]>=n||coun[num[i]]>2||(num[i]==0&&coun[num[i]]>1))

		{

			flag2=1;

		}

	}

	if(flag2==1)

	{

		cout<<0;

	}

	else

	{

		for(i=0;i<n/2;i++)

			ans = (ans*2)%mod;

		cout<<ans;

	}

	return 0;

}
// Slower C++ solution:
#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const int maxn=1e5+10;

const ll mm=1e9+7;

int sp[maxn],vis[maxn];

int main()

{

    int n;

    cin>>n;

    int flag=0;

    memset(vis,0,sizeof(vis));

    for(int i=1;i<=n;++i){

        cin>>sp[i];

        vis[sp[i]]++;

    }

    if(n%2==1)

    {

        for(int i=0;i<n;i+=2)

        {

            if(i==0)

            {

                if(vis[i]!=1)

                {

                    flag=1;

                    break;

                }

            }

            else

            {

                if(vis[i]!=2)

                {

                    flag=1;

                    break;

                }

            }

        }

        if(flag==1)

            cout<<0<<endl;

        else

        {

            ll res=1;

            for(int i=1;i<=(n-1)/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }

    }

    else if(n%2==0)

    {

        int flag=0;

        for(int i=1;i<n;i+=2)

        {

            if(vis[i]!=2)

            {

                flag=1;

                break;

            }

        }

        if(flag==0)

        {

            ll res=1;

            for(int i=1;i<=n/2;++i)

            {

                res=((res%mm)*2)%mm;

            }

          //  ll ans=res%mm;

            cout<<res<<endl;

        }



        else cout<<0<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.3984927960001339x):
#include<iostream>

#include<cstdio>

#include<math.h>

using namespace std;

#define PI 3.1415927

#define mod 1000000007

long long n,ans=1;

int coun[100005],num[100005];

int main()

{

	int n,i,x,flag1,flag2 = 0;

	cin>>n;

	flag1 = n % 2;

	for(i=0;i<n;i++)

	{

		scanf("%d",&num[i]);

		coun[num[i]]++;

		if(num[i]%2==flag1||num[i]>=n||coun[num[i]]>2||(num[i]==0&&coun[num[i]]>1))

		{

			flag2=1;

		}

	}

	if(flag2==1)

	{

		cout<<0;

	}

	else

	{

		for(i=0;i<n/2;i++)

			ans = (ans*2)%mod;

		cout<<ans;

	}

	return 0;

}
// Slower C++ solution:
#include<iostream>

#include<cmath>

#include<algorithm>

#include<cstdio>

#include<stack>

#include<queue>

#include<map>

#include<cstring>



using namespace std;



const int MAX=1e5+10;



int a[MAX];

int p[MAX];



long long mod_exp(int b){

	long long res,t;

	res=1;

	t=2;

	while(b){

		if(b&1){

			res=res*t%1000000007;

		}

		t=t*t%1000000007;

		b>>=1;

	}

	return res;

}



int main(){

	int n;

	cin>>n;

	memset(p,0,sizeof(p));

	for(int i=0;i<n;i++){

		scanf("%d",&a[i]);

		p[a[i]]++;

	}

	int cnt=0;

	bool flag=true;

	for(int i=0;i<n;i++){

		if((n+a[i]+1)%2!=0||(n-a[i]+1)%2!=0||(p[0]!=1&&n%2==1)||(p[a[i]]!=2&&a[i]!=0)){

			cout<<"0"<<endl;

			flag=false;

			break;

		}

		if(p[i]==2)

		cnt++;

	}

	if(flag)

	cout<<mod_exp(cnt)<<endl;

	return 0;

}

// Faster C++ solution for the same problem (measured speedup: 2.372376460474201x):
#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

#define MOD 1000000007

#define MAXN 100006

typedef long long LL;

int a[MAXN];

LL Quick(LL a,LL b,LL c)

{

	LL ans=1;

	a=a%c;

	while(b)

	{

		if(b&1)

			ans=(ans*a)%c;

		a=(a*a)%c;

		b/=2;

	}

	return ans;

}

int main()

{

	int n;

	while(~scanf("%d",&n))

	{

		int flag1=0,flag2=0;

		memset(a,0,sizeof(a));

		for(int i=0;i<n;i++)

		{

			int t;

			scanf("%d",&t);

			a[t]++;

			if(t>=n)

				flag1=1;

			if(n&1)

			{

				if(t&1)

					flag2=1;

			}

				

			else

			{

				if(!(t&1))

					flag2=1;

			}

		}

		if(flag1)

		{

			printf("0\n");

			continue;

		}

		if(flag2)

		{

			printf("0\n");

			continue;

		}

		if(n&1)

		{

			if(a[0]!=1)

			{

				printf("0\n");

				continue;

			}

		}

		else

		{

			if(a[0]!=0)

			{

				printf("0\n");

				continue;

			}

		}

		int cnt=1;

		LL m=n/2;

		LL sum;

		if(n&1)

		{

			for(int i=2;i<n;i+=2)

			{

				if(a[i]!=2)

				{

					cnt=0;

					break;

				}

					

			}

			if(cnt)

			{

				sum=Quick(2,m,MOD);

				printf("%lld\n",sum);

			}	

			else

			{

				printf("0\n");

				continue;

			}

		}

		else

		{

			for(int i=1;i<n;i+=2)

			{

				if(a[i]!=2)

				{

					cnt=0;

					break;

				}

					

			}

			if(cnt)

			{

				sum=Quick(2,m,MOD);

				printf("%lld\n",sum);

			}	

			else

			{

				printf("0\n");

				continue;

			}

		}

	}

	return 0;	

}