Problem: jfen

There is a one-person game to play on the H × W board. This game is a game to move 0 or 1 balls in each cell. You were playing this game and found it difficult to move the ball accurately from cell to cell because the ball is so round. So you decided to make a robot that would move the ball as instructed. Here, the notation (y, x) is used to represent the cell. This represents the cell in the xth column of the yth row.

Instructions to the robot are given by the four integers a, b, c, d. This means moving the ball at (a, b) to (c, d). At this time, it is guaranteed that the ball exists in (a, b) and does not exist in (c, d).

The state of the board is expressed by the following notation called "jfen".


[Data in the first line] / [Data in the second line] /.../ [Data in the H line]

This notation is a slash-separated concatenation of data representing each line on the board. The data in each row is represented by a character string, and the state of the cells in the 1st to Wth columns is described in order from the left. This string is represented by a number and the letter'b', where the integer represented by the number represents the number of consecutive blank cells and'b' represents the cell in which the ball resides. Here, integers must not be consecutive in the data of each row. Also, the sum of the integers written in the data of each line and the sum of the number of'b'are always W.

As an example, consider the following board surface condition. A blank cell is represented by a'.', And a cell in which the ball exists is represented by a'b'. The j character from the left of the i-th row in this example represents the state of the cell in the j-th column of the i-th row on the board.


....
.b.b
....


The above board is expressed in jfen as follows.


4 / 1b1b / 4

Create a program that outputs the board surface after the robot moves the ball when the robot is given the current board surface state and a command to move one ball. At this time, output the board surface in jfen notation.

Input

The input consists of multiple datasets. Each dataset has the following format.

> S
> a b c d

Each dataset consists of two lines, and the first line is given the jfen-formatted string S, which represents the state of the board. Here, the size of the board satisfies 2 ≤ W and H ≤ 9. Instructions to the robot are given to the following lines. This represents an instruction to move the ball at (a, b) to (c, d). The end of the input is represented by #.

Output

The output is one line of character string that expresses the state of the board after executing the instruction for each data set in jfen notation. There must be no other characters on the output line.

Sample Input


b1 / 1b
1 1 1 2
b5 / bbbbbb
2 4 1 4
b2b2b / 7
1 4 2 4


Output for Sample Input


1b / 1b
b2b2 / bbb1bb
b5b / 3b3


The initial state of the first input is as follows.


b.
.b


Since the ball of (1,1) is moved to (1,2), the board surface after the command is as follows.


.b
.b






Example

Input

b1/1b
1 1 1 2
b5/bbbbbb
2 4 1 4
b2b2b/7
1 4 2 4
#


Output

1b/1b
b2b2/bbb1bb
b5b/3b3

Solution (in CPP):

Solution:
 #include <bits/stdc++.h>
                                        #include<iostream>
                                        #include<cstdio>
                                        #include<vector>
                                        #include<queue>
                                        #include<map>
                                        #include<cstring>
                                        #include<string>
                                        #include <math.h>
                                        #include<algorithm>
                                    //    #include <boost/multiprecision/cpp_int.hpp>
                                        #include<functional>
                               #define int long long
                                        #define inf  1000000007
                                        #define pa pair<int,int>
                                        #define ll long long
                                        #define pal pair<double,pa>
                                        #define ppap pair<pa,int>
                                  
                                        #define ssa pair<string,int>
                                        #define  mp make_pair
                                        #define  pb push_back
                                        #define EPS (1e-10)
                                        #define equals(a,b) (fabs((a)-(b))<EPS)
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
                                        using namespace std;
                               class pas{
                                        	public:
                                        	int x,y,h;
                                        	pas(int x=0,int y=0,int h=0):x(x),y(y),h(h) {}
                                        	bool operator < (const pas &p) const{
                                        		return x != p.x ? x<p.x: y<p.y;
                                        	}
                                        	bool operator == (const pas &p) const{
                                        		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                        	}
                                        		
                                        
                                        };
                                        class pa2{
                                        	public:
                                        	int x,y;
                                        	pa2(int x=0,int y=0):x(x),y(y) {}
                                        	pa2 operator + (pa2 p) {return pa2(x+p.x,y+p.y);}
                                        	bool operator < (const pa2 &p) const{
                                        		return x != p.x ? x<p.x: y<p.y;
                                        	}
                                        	bool operator == (const pa2 &p) const{
                                        		return abs(x-p.x)==0 && abs(y-p.y)==0;
                                        	}
                                        		
                                        
                                        };
                                        
                                               #define ppa pair<int,pas>
                                        class Point{
                                        	public:
                                        	double x,y;
                                        	Point(double x=0,double y=0):x(x),y(y) {}
                                        	Point operator + (Point p) {return Point(x+p.x,y+p.y);}
                                        	Point operator - (Point p) {return Point(x-p.x,y-p.y);}
                                        	Point operator * (double a) {return Point(x*a,y*a);}
                                        	Point operator / (double a) {return Point(x/a,y/a);}
                                        	double absv() {return sqrt(norm());}
                                        	double norm() {return x*x+y*y;}
                                        	bool operator < (const Point &p) const{
                                        		return x != p.x ? x<p.x: y<p.y;
                                        	}
                                        	bool operator == (const Point &p) const{
                                        		return fabs(x-p.x)<EPS && fabs(y-p.y)<EPS;
                                        	}
                                        };
                                        typedef Point Vector;
                                 #define pl pair<int,pas>
                                        struct Segment{
                                        Point p1,p2;
                                        };
                                         double dot(Vector a,Vector b){
                                        	return a.x*b.x+a.y*b.y;
                                        }
                                        double cross(Vector a,Vector b){
                                        	return a.x*b.y-a.y*b.x;
                                        }
                                    
            bool parareru(Point a,Point b,Point c,Point d){
            //	if(abs(cross(a-b,d-c))<EPS)cout<<"dd "<<cross(a-b,d-c)<<endl;
            	return abs(cross(a-b,d-c))<EPS;
            }
            double distance_ls_p(Point a, Point b, Point c) {
              if ( dot(b-a, c-a) < EPS ) return (c-a).absv();
              if ( dot(a-b, c-b) < EPS ) return (c-b).absv();
              return abs(cross(b-a, c-a)) / (b-a).absv();
            }
            bool is_intersected_ls(Segment a,Segment b) {
            	if(a.p1==b.p1||a.p2==b.p1||a.p1==b.p2||a.p2==b.p2) return false;
            	if(parareru((a.p2),(a.p1),(a.p1),(b.p2))&&parareru((a.p2),(a.p1),(a.p1),(b.p1))){
            //		cout<<"sss"<<endl;
            		if(dot(a.p1-b.p1,a.p1-b.p2)<EPS) return true;
            		if(dot(a.p2-b.p1,a.p2-b.p2)<EPS) return true;
            		if(dot(a.p1-b.p1,a.p2-b.p1)<EPS) return true;
            		if(dot(a.p1-b.p2,a.p2-b.p2)<EPS) return true;
            		return false;
            	}
              else return ( cross(a.p2-a.p1, b.p1-a.p1) * cross(a.p2-a.p1, b.p2-a.p1) < EPS ) && ( cross(b.p2-b.p1, a.p1-b.p1) * cross(b.p2-b.p1, a.p2-b.p1) < EPS );
            }
             
            double segment_dis(Segment a,Segment b){
            	if(is_intersected_ls(a,b))return 0;
            	double r=distance_ls_p(a.p1, a.p2, b.p1);
            	r=min(r,distance_ls_p(a.p1, a.p2, b.p2));
            	r=min(r,distance_ls_p(b.p1, b.p2, a.p2));
            	r=min(r,distance_ls_p(b.p1, b.p2, a.p1));
            	return r;
            }
            Point intersection_ls(Segment a, Segment b) {
              Point ba = b.p2-b.p1;
              double d1 = abs(cross(ba, a.p1-b.p1));
              double d2 = abs(cross(ba, a.p2-b.p1));
              double t = d1 / (d1 + d2);
             
              return a.p1 + (a.p2-a.p1) * t;
            }
             
                            string itos( int i ) {
                            ostringstream s ;
                            s << i ;
                            return s.str() ;
                            }
                             
                            int gcd(int v,int b){
                            	if(v>b) return gcd(b,v);
                            	if(v==b) return b;
                            	if(b%v==0) return v;
                            	return gcd(v,b%v);
                            }
             
                            double distans(double x1,double y1,double x2,double y2){
                            	double rr=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
                            	return sqrt(rr);
                            	
                            }
                            
   //         int pr[2000010];
     //       int inv[2000010];
            /*
            int beki(int wa,int rr,int warukazu){
            	if(rr==0) return 1ll;
            	if(rr==1) return wa%warukazu;
            	if(rr%2==1) return (beki(wa,rr-1,warukazu)*wa)%warukazu;
            	int zx=beki(wa,rr/2,warukazu);
            	return (zx*zx)%warukazu;
            }
            
			int comb(int nn,int rr){
				int r=pr[nn]*inv[rr];
				r%=inf;
				r*=inv[nn-rr];
				r%=inf;
				return r;
			}
            
            void gya(int ert){
            	pr[0]=1;
            	for(int i=1;i<ert;i++){
            		pr[i]=(pr[i-1]*i)%inf;
            	}
            	for(int i=0;i<ert;i++) inv[i]=beki(pr[i],inf-2,inf);
            	
            }
             */
            
             //sort(ve.begin(),ve.end(),greater<int>());
                                     //----------------kokomade tenpure------------
            //vector<double> ans(100000000),ans2(100000000);
int a[20][20];
   signed main(){
string s;
   	while(1){
   	cin>>s;
   		if(s=="#")return 0;
   		
   		for(int i=0;i<10;i++)for(int j=0;j<10;j++)a[i][j]=0;
   		s+="/";
   		int h=1;
   		int d=1;
   		int w;
   		for(int i=0;i<s.length();i++){
   			if(s[i]=='/'){
   				h++;
   				w=d;
   				d=1;
   			}
   			if(s[i]>'0' && s[i]<='9') d+=s[i]-'0';
   			if(s[i]=='b'){
   				a[h][d]=1;
   				d++;
   			}
   		}
   		
   		int s1,s2,s3,s4;
   		cin>>s1>>s2>>s3>>s4;
   		a[s1][s2]=0;
   		a[s3][s4]=1;
   		
   		string ans="";
   		for(int i=1;i<=h-1;i++){
   			int d=0;
   			for(int j=1;j<=w-1;j++){
   				if(a[i][j]==1){
   					if(d>0){
   						ans+="0";
   						ans.back()+=d;
   					}
   					ans+="b";
   					d=0;
   				}
   				else d++;
   			}
   			if(d>0){
   			ans+="0";
   				ans.back()+=d;
   			}
   			if(i<h-1)	ans+="/";
   		}
   		cout<<ans<<endl;
   	}
   	return 0;
        }