#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int mod=998244353;
int n;
int p[N],sum[N];
int find(int x)
{
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
void merge(int a,int b)//节点维护
{
a=find(a),b=find(b);
if(a!=b)
{
p[a]=b;
sum[b]+=sum[a];
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)//初始化
{
sum[i]=1;
p[i]=i;
}
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
merge(i,x);
}
int ans=1;
for(int i=1;i<=n;i++)
{
if(p[i]==i)
{
if(sum[i]%2)
{
printf("0\n");
return 0;
}
else
{
ans=ans*2%mod;
}
}
}
printf("%d\n",ans);
return 0;
}