#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define RD(v) int v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} int d[300001]; main(){ char*rp=mmap(0l,1l<<28,1,2,0,0ll); while(*rp++>=48); int z=0; do{ RD(a); if(d[a]<0) continue; int l=d[a]+1;d[a]=-1; z=z>l?z:l; for(int p=a;p+=a,p<=300000;){ d[p]=d[p]>l?d[p]:l;; } }while(*rp); { long n=0,d=0; while(++n,d=d<<8|0x30|z%10,z/=10); write(1,&d,n); } _exit(0); }