水题///复制粘贴时候忘记改数字wa了2次 真是蠢
ACcode:
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
struct N{
queue<string>ans;
int x,y;
int st;
};
int vis[105][105];
int main(){
int x,y,c;
while(scanf("%d%d%d",&x,&y,&c)!=EOF){
memset(vis,0,sizeof(vis));
queue<N>q;
int flag=1;
N now,next;
now.x=0;
now.y=0;
now.st=0;
q.push(now);
while(!q.empty()){
now=q.front();
q.pop();
if(now.x==c||now.y==c){
cout<<now.st<<'\12';
while(!now.ans.empty()){
cout<<now.ans.front()<<'\12';
now.ans.pop();
}
flag=0;
break;
}
if(now.x==0){
next.x=x;
next.y=now.y;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("FILL(1)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}
if(now.y==0){
next.x=now.x;
next.y=y;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("FILL(2)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}
next.x=0;
next.y=now.y;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("DROP(1)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
next.x=now.x;
next.y=0;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("DROP(2)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
if(now.x+now.y<=y){
next.x=0;
next.y=now.x+now.y;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("POUR(1,2)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}else {
next.x=now.x+now.y-y;
next.y=y;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("POUR(1,2)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}
if(now.x+now.y<=x){
next.x=now.x+now.y;
next.y=0;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("POUR(2,1)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}else {
next.x=x;
next.y=now.x+now.y-x;
next.st=now.st+1;
next.ans=now.ans;
next.ans.push("POUR(2,1)");
if(!vis[next.x][next.y]){
q.push(next);
vis[next.x][next.y]=1;
}
}
}
if(flag)puts("impossible");
}
return 0;
}