#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 2001
int prime[N],a[N],f[N][N];
bool check[N];
int n,l,r,ma;
void init(){
int tot=0;
for(int i=2;i<=2000;i++){
if(!check[i])
prime[tot++]=i;
for(int j=0;j<tot;j++){
if(i*prime[j]>2000) break;
check[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
int main(){
init();
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++) f[i][i]=a[i];
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
f[i][j]=max(f[i][j],f[i][j-1]+a[j]);
if(ma<f[i][j]&&!check[f[i][j]]){
ma=f[i][j];
l=i;
r=j;
}
}
}
printf("%d %d %d
",l,r,ma);
return 0;
}
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
#define N 2010
int n,l,r,ma,a[N],f[N][N];
int jfs(int x,int y){
if(x==y) return a[x];
if(f[x][y]>=0) return f[x][y];
int mid=x+y>>1;
return f[x][y]=jfs(x,mid)+jfs(mid+1,y);
}
int pd(int x){
if(x<2) return 0;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
memset(f,-1,sizeof f);
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
int p=jfs(i,j);
if(p>ma&&pd(p))
ma=p,l=i,r=j;
}
}
printf("%d %d %d
",l,r,ma);
return 0;
}
#include<cstdio>
#include<cmath>
using namespace std;
#define N 2001
int a[N],sum[N],n,ans,l,r;
int pd(int x){
if(x<2) return 0;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
}
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
if(pd(sum[j]-sum[i-1])){
if(sum[j]-sum[i-1]>ans){
ans=sum[j]-sum[i-1];
l=i; r=j;
}
}
printf("%d %d %d
",l,r,ans);
return 0;
}