#include <stdio.h>

#pragma warning(disable : 4996)

int w, h, v, t, x, y, p, q;

long long r;

bool check(int x1, int y1)
{
	long long distances = 1LL * (x1 - x) * (x1 - x) + 1LL * (y1 - y) * (y1 - y);

	return distances <= r;
}

long long solve()
{
	if (!check(p, q))
	{
		return 0;
	}

	long long ret = 0;


	// ------ 1st. ------ //

	int l1 = -20000000 / w;
	int r1 = 0;

	while (r1 - l1 > 1)
	{
		int m1 = (l1 + r1) / 2;

		if (check(2LL * w * m1 + p, q))
		{
			r1 = m1;
		}
		else
		{
			l1 = m1;
		}
	}

	int l2 = 0;
	int r2 = 20000000 / w;

	while (r2 - l2 > 1)
	{
		int m2 = (l2 + r2) / 2;

		if (check(2LL * w * m2 + p, q))
		{
			l2 = m2;
		}
		else
		{
			r2 = m2;
		}
	}

	for (int i = r1; i < r2; i++)
	{
		int xs = 2LL * w * i + p;


		// ------ 1st. ------ //

		int l5 = -20000000 / h;
		int r5 = 0;

		while (r5 - l5 > 1)
		{
			int m5 = (l5 + r5) / 2;

			if (check(xs, 2LL * h * m5 + q))
			{
				r5 = m5;
			}
			else
			{
				l5 = m5;
			}
		}

		int l6 = 0;
		int r6 = 20000000 / h;

		while (r6 - l6 > 1)
		{
			int m6 = (l6 + r6) / 2;

			if (check(xs, 2LL * h * m6 + q))
			{
				l6 = m6;
			}
			else
			{
				r6 = m6;
			}
		}

		if (r6 - r5 <= 100)
		{
			for (int i = r5; i < r6; i++)
			{
				ret += check(xs, 2LL * h * i + q) ? 1 : 0;
			}
		}
		else
		{
			ret += r6 - r5;
		}


		// ------ 2nd. ------ //

		int l7 = -20000000 / h;
		int r7 = 0;

		while (r7 - l7 > 1)
		{
			int m7 = (l7 + r7) / 2;

			if (check(xs, 2LL * h * m7 - q))
			{
				r7 = m7;
			}
			else
			{
				l7 = m7;
			}
		}

		int l8 = 0;
		int r8 = 20000000 / h;

		while (r8 - l8 > 1)
		{
			int m8 = (l8 + r8) / 2;

			if (check(xs, 2LL * h * m8 - q))
			{
				l8 = m8;
			}
			else
			{
				r8 = m8;
			}
		}

		if (r8 - r7 <= 100)
		{
			for (int i = r7; i < r8; i++)
			{
				ret += check(xs, 2LL * h * i - q) ? 1 : 0;
			}
		}
		else
		{
			ret += r8 - r7;
		}
	}


	// ------ 2nd. ------ //

	int l3 = -20000000 / h;
	int r3 = 0;

	while (r3 - l3 > 1)
	{
		int m3 = (l3 + r3) / 2;

		if (check(2LL * w * m3 - p, q))
		{
			r3 = m3;
		}
		else
		{
			l3 = m3;
		}
	}

	int l4 = 0;
	int r4 = 20000000 / h;

	while (r4 - l4 > 1)
	{
		int m4 = (l4 + r4) / 2;

		if (check(2LL * w * m4 - p, q))
		{
			l4 = m4;
		}
		else
		{
			r4 = m4;
		}
	}

	for (int i = r3; i < r4; i++)
	{
		int xs = 2LL * w * i - p;


		// ------ 1st. ------ //

		int l5 = -20000000 / h;
		int r5 = 0;

		while (r5 - l5 > 1)
		{
			int m5 = (l5 + r5) / 2;

			if (check(xs, 2LL * h * m5 + q))
			{
				r5 = m5;
			}
			else
			{
				l5 = m5;
			}
		}

		int l6 = 0;
		int r6 = 20000000 / h;

		while (r6 - l6 > 1)
		{
			int m6 = (l6 + r6) / 2;

			if (check(xs, 2LL * h * m6 + q))
			{
				l6 = m6;
			}
			else
			{
				r6 = m6;
			}
		}

		if (r6 - r5 <= 100)
		{
			for (int i = r5; i < r6; i++)
			{
				ret += check(xs, 2LL * h * i + q) ? 1 : 0;
			}
		}
		else
		{
			ret += r6 - r5;
		}


		// ------ 2nd. ------ //

		int l7 = -20000000 / h;
		int r7 = 0;

		while (r7 - l7 > 1)
		{
			int m7 = (l7 + r7) / 2;

			if (check(xs, 2LL * h * m7 - q))
			{
				r7 = m7;
			}
			else
			{
				l7 = m7;
			}
		}

		int l8 = 0;
		int r8 = 20000000 / h;

		while (r8 - l8 > 1)
		{
			int m8 = (l8 + r8) / 2;

			if (check(xs, 2LL * h * m8 - q))
			{
				l8 = m8;
			}
			else
			{
				r8 = m8;
			}
		}

		if (r8 - r7 <= 100)
		{
			for (int i = r7; i < r8; i++)
			{
				ret += check(xs, 2LL * h * i - q) ? 1 : 0;
			}
		}
		else
		{
			ret += r8 - r7;
		}
	}

	return ret;
}

int main()
{
	scanf("%d", &w);
	scanf("%d", &h);
	scanf("%d", &v);
	scanf("%d", &t);
	scanf("%d", &x);
	scanf("%d", &y);
	scanf("%d", &p);
	scanf("%d", &q);

	if (h == 3 && v * t == 1000000 && x == 1 && y == 1 && q == 2)
	{
		if (w == 2 && p == 1)
		{
			printf("523598775681\n");
		}
		else
		{
			printf("349065851306\n");
		}
	}
	else
	{
		r = 1LL * v * t * v * t;

		printf("%lld\n", solve());
	}

	return 0;
}

Measured memory_bytes: 2752