Vanya got n cubes. He decided to build a pyramid from them. Vanya wants to build the pyramid as follows: the top level of the pyramid must consist of 1 cube, the second level must consist of 1 + 2 = 3 cubes, the third level must have 1 + 2 + 3 = 6 cubes, and so on. Thus, the i-th level of the pyramid must have 1 + 2 + ... + (i - 1) + i cubes.

Vanya wants to know what is the maximum height of the pyramid that he can make using the given cubes.

Input

The first line contains integer n (1 ≤ n ≤ 104) — the number of cubes given to Vanya.

Output

Print the maximum possible height of the pyramid in the single line.

Examples

Input

1


Output

1


Input

25


Output

4

Note

Illustration to the second sample: 

<image>
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.StringTokenizer;

public final class Solution
{
  @SuppressWarnings("unused")
  private class FastScanner
  {
    private final BufferedReader reader;
    private StringTokenizer tokenizer;

    public FastScanner(InputStream inputStream)
    {
      this.reader = new BufferedReader(new InputStreamReader(inputStream));
    }

    public String nextToken() throws IOException
    {
      while (tokenizer == null || !tokenizer.hasMoreElements())
        tokenizer = new StringTokenizer(reader.readLine());
      return tokenizer.nextToken();
    }

    public int nextInt() throws NumberFormatException, IOException
    {
      return Integer.parseInt(nextToken());
    }

    public long nextLong() throws NumberFormatException, IOException
    {
      return Long.parseLong(nextToken());
    }

    public double nextDouble() throws NumberFormatException, IOException
    {
      return Double.parseDouble(nextToken());
    }

    public String nextLine() throws IOException
    {
      tokenizer = null;
      return reader.readLine();
    }
  }

  private final FastScanner input;
  private final PrintStream output;

  public static void main(String[] args) throws Exception
  {
    Solution solution = new Solution();
    solution.Solve();
  }

  public Solution() throws FileNotFoundException
  {
    if (System.getProperty("ONLINE_JUDGE") == null)
      System.setIn(new FileInputStream("input.txt"));

    // input = new FastScanner(new FileInputStream("numbers.in"));
    // output = new PrintStream("numbers.out");

    input = new FastScanner(System.in);
    output = System.out;
  }

  public void Solve() throws NumberFormatException, IOException
  {
    int n = input.nextInt();

    int k = 1;
    while (true)
    {
      n -= k * (k + 1) / 2;
      if (n < 0)
        break;
      k++;
    }

    output.println(k - 1);
  }
}
