Codeforces celebrates 10 years! We are pleased to announce the crowdfunding-campaign. Congratulate us by the link https://codeforces.com/10years.
×

Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

E. Riding in a Lift

time limit per test

2 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputImagine that you are in a building that has exactly *n* floors. You can move between the floors in a lift. Let's number the floors from bottom to top with integers from 1 to *n*. Now you're on the floor number *a*. You are very bored, so you want to take the lift. Floor number *b* has a secret lab, the entry is forbidden. However, you already are in the mood and decide to make *k* consecutive trips in the lift.

Let us suppose that at the moment you are on the floor number *x* (initially, you were on floor *a*). For another trip between floors you choose some floor with number *y* (*y* ≠ *x*) and the lift travels to this floor. As you cannot visit floor *b* with the secret lab, you decided that the distance from the current floor *x* to the chosen *y* must be strictly less than the distance from the current floor *x* to floor *b* with the secret lab. Formally, it means that the following inequation must fulfill: |*x* - *y*| < |*x* - *b*|. After the lift successfully transports you to floor *y*, you write down number *y* in your notepad.

Your task is to find the number of distinct number sequences that you could have written in the notebook as the result of *k* trips in the lift. As the sought number of trips can be rather large, find the remainder after dividing the number by 1000000007 (10^{9} + 7).

Input

The first line of the input contains four space-separated integers *n*, *a*, *b*, *k* (2 ≤ *n* ≤ 5000, 1 ≤ *k* ≤ 5000, 1 ≤ *a*, *b* ≤ *n*, *a* ≠ *b*).

Output

Print a single integer — the remainder after dividing the sought number of sequences by 1000000007 (10^{9} + 7).

Examples

Input

5 2 4 1

Output

2

Input

5 2 4 2

Output

2

Input

5 3 4 1

Output

0

Note

Two sequences *p*_{1}, *p*_{2}, ..., *p*_{k} and *q*_{1}, *q*_{2}, ..., *q*_{k} are distinct, if there is such integer *j* (1 ≤ *j* ≤ *k*), that *p*_{j} ≠ *q*_{j}.

Notes to the samples:

- In the first sample after the first trip you are either on floor 1, or on floor 3, because |1 - 2| < |2 - 4| and |3 - 2| < |2 - 4|.
- In the second sample there are two possible sequences: (1, 2); (1, 3). You cannot choose floor 3 for the first trip because in this case no floor can be the floor for the second trip.
- In the third sample there are no sought sequences, because you cannot choose the floor for the first trip.

Codeforces (c) Copyright 2010-2020 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Feb/23/2020 05:54:03 (g1).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|