A correct expression of the form a+b=c was written; a, b and c are non-negative integers without leading zeros. In this expression, the plus and equally signs were lost. The task is to restore the expression. In other words, one character '+' and one character '=' should be inserted into given sequence of digits so that: 

  * character'+' is placed on the left of character '=', 
  * characters '+' and '=' split the sequence into three non-empty subsequences consisting of digits (let's call the left part a, the middle part — b and the right part — c), 
  * all the three parts a, b and c do not contain leading zeros, 
  * it is true that a+b=c. 



It is guaranteed that in given tests answer always exists.

Input

The first line contains a non-empty string consisting of digits. The length of the string does not exceed 106.

Output

Output the restored expression. If there are several solutions, you can print any of them.

Note that the answer at first should contain two terms (divided with symbol '+'), and then the result of their addition, before which symbol'=' should be. 

Do not separate numbers and operation signs with spaces. Strictly follow the output format given in the examples.

If you remove symbol '+' and symbol '=' from answer string you should get a string, same as string from the input data.

Examples

Input

12345168


Output

123+45=168


Input

099


Output

0+9=9


Input

199100


Output

1+99=100


Input

123123123456456456579579579


Output

123123123+456456456=579579579
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Random;
import java.util.StringTokenizer;

public class F
{
	static int[] base, mod;
	static int[][] val;
	static int[][] pow;
	static int[][] pwInv;
	static int n;
	public static void main(String[] args) throws IOException
	{
		Scanner sc = new Scanner(System.in);
		PrintWriter pw = new PrintWriter(System.out);
		
		String s = sc.next();
		char[] arr = s.toCharArray();
		for (int i = 0; i < arr.length; i++)
			arr[i] -= '0';
		n = arr.length;
		
		base = new int[2];
		mod = new int[2];
		pow = new int[2][n];
		pwInv = new int[2][n];
		Random rnd = new Random();
		base[0] = 10;
		base[1] = 10;
		
		mod[0] = BigInteger.probablePrime(29, rnd).intValue();
		
		val = new int[2][n];
		
		for (int a0 = 0; a0 < 1; a0++)
		{
			pow[a0][0] = 1;
			for (int i = 1; i < pow[a0].length; i++)
			{
				pow[a0][i] = (int)((1l*pow[a0][i-1]*base[a0])%mod[a0]);
			}
		}
		
		for (int a0 = 0; a0 < 1; a0++)
		{
			for (int i = 0; i < pow[a0].length; i++)
			{
				pwInv[a0][i] = inv(pow[a0][i], mod[a0]);
			}
		}
		
			
		for (int a0 = 0; a0 < 1; a0++)
		{
			int ans = 0;
			for (int i = n-1; i >= 0; i--)
			{
				ans = (int)((ans+1l*pow[a0][n-1-i]*arr[i])%mod[a0]);
				val[a0][i] = ans;
			}
		}
		
		
		for (int i = n-1; i >= 0; i--)
		{
			boolean ok[] = new boolean[4];
			Arrays.fill(ok, true);
			for (int a0 = 0; a0 < 1; a0++)
			{
				try
				{
					// len3 = len2
					if(sub(add(getAns(0, n-2*(n-i), a0), getAns(n-2*(n-i), i, a0), a0), val[a0][i], a0) != 0)
						ok[0] = false;
				}
				catch(Exception e)
				{
					ok[0] = false;
				}
				try{
					
				// len3 = len2+1
				if(sub(add(getAns(0, n-2*(n-i)+1, a0), getAns(n-2*(n-i)+1, i, a0), a0), val[a0][i], a0) != 0)
					ok[1] = false;
				}catch(Exception e)
				{
					ok[1] = false;
				}
				try{
				// len3 = len1
				if(sub(add(getAns(0, n-i, a0), getAns(n-i, i, a0), a0), val[a0][i], a0) != 0)
					ok[2] = false;
				}catch(Exception e)
				{
					ok[2] = false;
				}
				try{
					
				// len3 = len1+1
				if(sub(add(getAns(0, n-i-1, a0), getAns(n-i-1, i, a0), a0), val[a0][i], a0) != 0)
					ok[3] = false;
				}catch(Exception e)
				{
					ok[3] = false;
				}
			}
			if(ok[0])
			{
				pw.println(s.substring(0, n-2*(n-i)) + "+" + s.substring(n-2*(n-i), i) + "=" + s.substring(i));	
				pw.flush();
				return;
			}
			if(ok[1])
			{
				pw.println(s.substring(0, n-2*(n-i)+1) + "+" + s.substring(n-2*(n-i)+1, i) + "=" + s.substring(i));	
				pw.flush();
				return;
			}if(ok[2])
			{
				pw.println(s.substring(0, n-i) + "+" + s.substring(n-i, i) + "=" + s.substring(i));	
				pw.flush();
				return;
			}if(ok[3])
			{
				pw.println(s.substring(0, n-i-1) + "+" + s.substring(n-i-1, i) + "=" + s.substring(i));	
				pw.flush();
				return;
			}
		}
		pw.flush();
		pw.close();
	}
	static int[] cum;
	
	static int getAns(int a, int b, int a0)
	{
		int ans = val[a0][a];
		ans = sub(ans, val[a0][b], a0);
		ans = mul(ans, pwInv[a0][n-b], a0);
		return ans;
	}
	static int inv(long x , long mod){
		long r, y;
		for(r = 1 , y = mod - 2 ; y != 0 ;x = x * x % mod, y>>=1)
		if ((y & 1) == 1)
		r = r * x % mod;
		return (int)r;
		}
	
	static int mul(int a, int b, int a0)
	{
		return (int)(1l*a*b%mod[a0]);
	}
	
	static int add(int a, int b, int a0)
	{
		return (a+b)%mod[a0];
	}
	
	static int sub(int a, int b, int a0)
	{
		int ret =  (a-b)%mod[a0];
		if(ret < 0)
			ret += mod[a0];
		return ret;
	}
	
	
	static class Scanner
	{
		StringTokenizer st;
		BufferedReader br;

		public Scanner(InputStream s)
		{
			br = new BufferedReader(new InputStreamReader(s));
		}

		public Scanner(String s) throws FileNotFoundException
		{
			br = new BufferedReader(new FileReader(new File((s))));
		}

		public String next() throws IOException
		{
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}

		public int nextInt() throws IOException
		{
			return Integer.parseInt(next());
		}

		public long nextLong() throws IOException
		{
			return Long.parseLong(next());
		}

		public String nextLine() throws IOException
		{
			return br.readLine();
		}

		public double nextDouble() throws IOException
		{
			String x = next();
			StringBuilder sb = new StringBuilder("0");
			double res = 0, f = 1;
			boolean dec = false, neg = false;
			int start = 0;
			if (x.charAt(0) == '-')
			{
				neg = true;
				start++;
			}
			for (int i = start; i < x.length(); i++)
				if (x.charAt(i) == '.')
				{
					res = Long.parseLong(sb.toString());
					sb = new StringBuilder("0");
					dec = true;
				} else
				{
					sb.append(x.charAt(i));
					if (dec)
						f *= 10;
				}
			res += Long.parseLong(sb.toString()) / f;
			return res * (neg ? -1 : 1);
		}

		public boolean ready() throws IOException
		{
			return br.ready();
		}
	}
}
