The Queen of England has n trees growing in a row in her garden. At that, the i-th (1 ≤ i ≤ n) tree from the left has height ai meters. Today the Queen decided to update the scenery of her garden. She wants the trees' heights to meet the condition: for all i (1 ≤ i < n), ai + 1 - ai = k, where k is the number the Queen chose.

Unfortunately, the royal gardener is not a machine and he cannot fulfill the desire of the Queen instantly! In one minute, the gardener can either decrease the height of a tree to any positive integer height or increase the height of a tree to any positive integer height. How should the royal gardener act to fulfill a whim of Her Majesty in the minimum number of minutes?

Input

The first line contains two space-separated integers: n, k (1 ≤ n, k ≤ 1000). The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 1000) — the heights of the trees in the row. 

Output

In the first line print a single integer p — the minimum number of minutes the gardener needs. In the next p lines print the description of his actions. 

If the gardener needs to increase the height of the j-th (1 ≤ j ≤ n) tree from the left by x (x ≥ 1) meters, then print in the corresponding line "+ j x". If the gardener needs to decrease the height of the j-th (1 ≤ j ≤ n) tree from the left by x (x ≥ 1) meters, print on the corresponding line "- j x".

If there are multiple ways to make a row of trees beautiful in the minimum number of actions, you are allowed to print any of them.

Examples

Input

4 1
1 2 1 5


Output

2
+ 3 2
- 4 1


Input

4 1
1 2 3 4


Output

0
import java.io.*;
import java.math.BigInteger;
import java.util.*;

import static java.lang.Math.*;
 
public class solver implements Runnable {
        final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
        BufferedReader in;
        PrintWriter out;
        StringTokenizer tok = new StringTokenizer("");
       
        void init() throws FileNotFoundException{
            if (ONLINE_JUDGE){
                in = new BufferedReader(new InputStreamReader(System.in));
                out = new PrintWriter(System.out);
           }else{
                in = new BufferedReader(new FileReader("input.txt"));
                out = new PrintWriter("output.txt");
           }
        }       
        String readString() throws IOException{
                while(!tok.hasMoreTokens()){
                        try{
                                tok = new StringTokenizer(in.readLine());
                        }catch (Exception e){
                                return null;
                        }
                }
                return tok.nextToken();
        }
        String readString(String delim) throws IOException{
            while(!tok.hasMoreTokens()){
                    try{
                            tok = new StringTokenizer(in.readLine());
                    }catch (Exception e){
                            return null;
                    }
            }
            return tok.nextToken(delim);
    }
       
        int readInt() throws IOException{
                return Integer.parseInt(readString());
        } 
        int readInt(String delim) throws IOException{
            return Integer.parseInt(readString(delim));
        } 
        long readLong() throws IOException{
                return Long.parseLong(readString());
        }  
        long readLong(String delim) throws IOException{
            return Long.parseLong(readString(delim));
        }      
        double readDouble() throws IOException{
                return Double.parseDouble(readString());
        }      
        double readDouble(String delim) throws IOException{
            return Double.parseDouble(readString(delim));
        } 
        char readChar() throws IOException {
            char val = 0;
            do{
                val = (char) in.read();
            }while(val == '\n' || val == '\r');
            return val;
        }
        char readChar(String skipChars)throws IOException{
            char val = 0;
            boolean ret;
            do{
                val = (char) in.read();
                ret = false;
                for (int i = skipChars.length()-1; i >= 0; i--){
                    if (skipChars.charAt(i) == val){
                        ret = true;
                        break;
                    }
                }
            }while(ret);
            return val;
        }
        
        public class Pair<T1,T2> {
            public T1 x1;
            public T2 x2;
            public Pair(){};
            public Pair(T1 x1, T2 x2){
                this.x1 = x1;
                this.x2 = x2;
            }
        }
        public class Point implements Comparable<Point>{
            public int x1, x2;
            public Point(){}
            public Point(int a, int b){x1 = a;x2=b;}
            public int compareTo(Point o) {
                return x1-o.x1;
            }
        }
 //----------------------------------------
        
        
                      
        int[] a;
        public void solve() throws IOException {
            int n = readInt(), 
                    k = readInt();
            a = new int[n];
            
            int it = 0;
            int zt = 1;
            
            int ir = 0;
            int zr = 0;
            
            for (int i = 0; i < n; i++){
                a[i] = readInt();
            }
            boolean go = false;
            
            for (int i = 0; i < n; i++){
                
                it = i;
                zt = 1;
                if (a[i] - k*i >=1)
                    go =true;
                    for (int j = 1; i+j < n; j++){
                        if (a[i+j] == a[i]+k*j){
                            zt++;
                        }
                    }
                
                if (zt >= zr && a[i] - k*i >=1){
                    zr = zt;
                    ir = it;
                }
            }

            ArrayList<String> res = new ArrayList<String>();
            if (!go){
                //while(true)
                for (int i = 0; i < n; i++){
                    
                    int ans = (i+1);
                    if(a[i] != ans){
                        int sign = a[i] - ans;
                        if (sign > 0){
                            res.add("- " + (i+1) + " " + abs(sign));
                        }else{
                            res.add("+ " + (i+1) + " " + abs(sign));
                        }
                        a[i] = ans;
                    }
                }
            }else{ 
                for (int i = ir-1; i >= 0; i--){
                    
                    int ans = a[i+1] - k;
                    if(a[i] != ans){
                        int sign = a[i] - ans;
                        if (sign > 0){
                            res.add("- " + (i+1) + " " + abs(sign));
                        }else{
                            res.add("+ " + (i+1) + " " + abs(sign));
                        }
                        a[i] = ans;
                    }
                }
                for (int i = ir+1; i < n; i++){
                    
                    int ans = a[i-1] + k;
                    if(a[i] != ans){
                        int sign = a[i] - ans;
                        if (sign > 0){
                            res.add("- " + (i+1) + " " + abs(sign));
                        }else{
                            res.add("+ " + (i+1) + " " + abs(sign));
                        }
                        a[i] = ans;
                    }
                }
            }
            
            out.println(res.size());
            for (String s : res){
                out.println(s);
            }
        }
//----------------------------------------
        public static void main(String[] args){
                new Thread(null, new solver(), "", 256 * (1L << 20)).start();
        }
       
        long timeBegin, timeEnd;
 
        void time(){
                timeEnd = System.currentTimeMillis();
                System.err.println("Time = " + (timeEnd - timeBegin));
        }
       
        public void run(){
                try{
                        timeBegin = System.currentTimeMillis();
                        init();
                        solve();
                        out.close();
                        time();
                }catch (Exception e){
                        e.printStackTrace(System.err);
                        System.exit(-1);
                }
        }
}