#include #include #include #include #include using namespace std; #define INF 0x3FFFFFF #define MAXN 2222 struct edge { int u,v,w; }e[99999999]; int a,b,c; int n,en; int pre[MAXN],in[MAXN],id[MAXN],vis[MAXN]; int x[MAXN],y[MAXN],z[MAXN]; int getdis(int i,int j) { return abs(x[i]-x[j])+abs(y[i]-y[j])+abs(z[i]-z[j]); } void add(int u,int v,int w) { e[en].u=u; e[en].v=v; e[en++].w=w; } int zl(int root ,int vn) { int ans=0; int cnt; while(1) { for(int i=0;ie[i].w && e[i].u!=e[i].v) { pre[e[i].v]=e[i].u; in[e[i].v]=e[i].w; } } in[root]=0; pre[root]=root; for(int i=0;i=z[j]) add(i,j,getdis(i,j)*b); else add(i,j,getdis(i,j)*b+c); } } int ans=zl(0,n+1); if(ans==-1) { printf("poor XiaoA\n"); return; } printf("%d\n",ans); } int main() { while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF && n+a+b+c) solve(); return 0; }