#include<cmath>
#include<cstdio>
#include"testlib.h"
#include<iostream>
#include<map>
#define ll long long
using namespace std;
const int N=1e6+5;
int a[N];
ll b[N];
map<int,int> f;
map<ll,int> g;
int main(int argc,char *argv[]) {
	registerTestlibCmd(argc,argv);
	int n,m,p;
	n=inf.readInt();
	m=ouf.readInt();
	p=ans.readInt();
	for(int i=1;i<=n;i++){
		a[i]=ouf.readInt();
		if(a[i]<1||a[i]>300000){
			quitf(_wa,"Wrong Answer: Invalid a:a[%d] out of range\n",i);
			return 0;
		}
	}
	for(int i=1;i<n;i++) b[i]=1ll*a[i]*a[i+1];
	int rm=0,fl=0;
	int l=0,r=0;
	for(int i=1;i<=n;i++){
		f[a[i]]++;
		if(f[a[i]]==1) rm++;
		if(g[b[i]]>1){
			fl=1;
			l=g[b[i]];
			r=i;
		}
		if(i<n) g[b[i]]=i;
	}
	int x=atoi(argv[4]); 
	if(rm!=m){
		quitf(_wa,"Wrong Answer: Distinct elements of a differs from your m\n");
		return 0;
	}
	if(fl){
		if(m==p) quitp(0.2,"Partial Result: Invalid a but optimal m\n");
		else quitf(_wa,"Wrong Answer: Invalid a\n");
		return 0;
	}
	if(m>2*p) quitp(0.2,"Partial Result: 20%. Optimal m is %d,your m is %d\n",p,m);
	else if(m>p+1) quitp(0.4,"Partial Result: 40%. Optimal m is %d,your m is %d\n",p,m);
	else if(m==p+1) quitp(0.6,"Partial Result: 60%. Optimal m is %d,your m is %d\n",p,m);
	else if(m==p) quitf(_ok,"Perfect Result. You can get all points in this test case!");
	return 0;
}
