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 static java.lang.System.in;

import java.io.IOException;


public class B236 {
    static byte[] buffer = new byte[8192];
    static int offset = 0;
    static int bufferSize = 0;
    
    public static void main(String args[]) throws IOException
    {
        int n = readInt();
        int k =readInt();
        int arr[]= new int[n+1];
        int pos []= new int[n+1];
        for (int i=1;i<=n;i++)
            {
            arr[i]= readInt();
            pos[i]= i;
            }
        
         int changes= 2000;
         int p =-1;
         for (int i=1;i<=n;i++)
         {
             int ch =0;
             for (int j=1;j<=n;j++)
             {
                 int tr = arr[i]+(j-i)*k;
                 if (tr<=0)
                     {
                     ch =2000;
                     break;
                     }
                 else if (tr!=arr[j])
                 {
                     ch++;
                 }
                     
             }
             if (ch<changes)
             {
                 changes = ch;
                 p=i;
             }
         }
         System.out.println(changes);
        // System.out.println(p);
         if (changes!=0)
         for (int i=1;i<=n;i++)
         {
             int ch = (i-p)*k;
             int tr = arr[p] + ch;
             int fin = tr-arr[i];
             if (fin>0)
                 System.out.println("+ "+ i + " "+fin);
             
             if (fin<0)
                 System.out.println("- "+ i + " "+ (-1*fin));
         }
        
    }
    static int readInt() throws IOException{
        int number = 0;
        int neg = 1;
        if(offset==bufferSize){
            offset = 0;
            bufferSize = in.read(buffer);
        }
        for(;buffer[offset]<0x30 || buffer[offset]=='-'; ++offset)
        {
            if (buffer[offset]=='-')
                neg = -1;
            if(offset==bufferSize-1){
                offset=-1;
                bufferSize = in.read(buffer);
            }
        }
        for(;offset<bufferSize && buffer[offset]>0x2f;++offset){
            number = number*0x0a+buffer[offset]-0x30;
            if(offset==bufferSize-1){
                offset = -1;
                bufferSize = in.read(buffer);
            }
        }
        ++offset;
        return number*neg;
    }

}
