#include #include #include #include #include using namespace std; #define MAXN 1000005 int prime[MAXN]; int p[MAXN]; int s[MAXN]; vector pmo[MAXN]; int up; int tag[MAXN]; int ttt[MAXN]; int answer[MAXN]; typedef struct { long long m[2][2]; }Matrix; void Prime() { long long i,k; up=0; memset(prime,0,sizeof(prime)); for (i=2;i<=MAXN-3;i++) { if (prime[i]==1) continue; k=i; while(k*i>=1; } return b.m[0][0]; } int num[100][2]; int ret; int now=0; int Multi(int t,int n) { int ans=1; while(n) { if (n&1) ans=ans*t; t=t*t; n>>=1; } return ans; } void DFS(int t,int mod,int mul) { int j; if (mul>=ret) return; if (t==now) { if (CountFib(mul,mod)==1 && CountFib(mul+1,mod)==1) ret=mul; return; } for (j=0;j<=num[t][1];j++) { if (num[t][0]==2 && j==0) continue; int k=mul*Multi(num[t][0],j); DFS(t+1,mod,k); } } int DT(int t,int mod) { int i; ret=t; now=0; for (i=0;i0) { mm=max(prime[fj[i][0]],mm); tag[prime[fj[i][0]]]+=fj[i][1]-1; } int tt=Count(fj[i][0]); for (j=0;j