Ksusha the Squirrel is standing at the beginning of a straight road, divided into n sectors. The sectors are numbered 1 to n, from left to right. Initially, Ksusha stands in sector 1. 

Ksusha wants to walk to the end of the road, that is, get to sector n. Unfortunately, there are some rocks on the road. We know that Ksusha hates rocks, so she doesn't want to stand in sectors that have rocks.

Ksusha the squirrel keeps fit. She can jump from sector i to any of the sectors i + 1, i + 2, ..., i + k. 

Help Ksusha! Given the road description, say if she can reach the end of the road (note, she cannot stand on a rock)?


-----Input-----

The first line contains two integers n and k (2 ≤ n ≤ 3·10^5, 1 ≤ k ≤ 3·10^5). The next line contains n characters — the description of the road: the i-th character equals ".", if the i-th sector contains no rocks. Otherwise, it equals "#".

It is guaranteed that the first and the last characters equal ".".


-----Output-----

Print "YES" (without the quotes) if Ksusha can reach the end of the road, otherwise print "NO" (without the quotes).


-----Examples-----
Input
2 1
..

Output
YES

Input
5 2
.#.#.

Output
YES

Input
7 3
.#.###.

Output
NO

Source: codeforces | Difficulty: EASY
Tags: Implementation

Complete search


Solutions:
(n, k) = map(int, input().split())
a = input()
print(('YES', 'NO')[k * '#' in a])


def squirrel_jump(n, k, road):
	min_jump = 0
	temp = 0
	if k >= n - 1:
		return 'YES'
	else:
		for i in road:
			if i == '.':
				if temp > min_jump:
					min_jump = temp
				temp = 0
			else:
				temp += 1
		if k > min_jump:
			return 'YES'
		else:
			return 'NO'
(n, k) = list(map(int, input().split()))
road = input()
print(squirrel_jump(n, k, road))


l1 = [int(x) for x in input().split()]
(n, k) = (l1[0], l1[1])
l2 = input()
ruined = 0
if '#' * k in l2:
	ruined = 1
if not ruined:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input()
last = 0
flag = True
for i in range(1, len(s)):
	if s[i] == '#' and i - last >= k:
		flag = False
		break
	if s[i] == '.':
		last = i
print('YES') if flag else print('NO')


(n, k) = input().split()
n = int(n)
k = int(k)
a = list(input())
i = 0
j = []
while i < n:
	if a[i] == '.':
		j.append(i)
	i += 1
h = []
j.sort()
f = 0
while f < len(j) - 1:
	h.append(-j[f] + j[f + 1] - 1)
	f += 1
h.sort()
if h.pop() >= k:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
print('NO' if '#' * k in input() else 'YES')


(n, k) = map(int, input().split())
s = input()
(cnt, max_cnt) = (0, 0)
for i in range(n):
	if s[i] == '#':
		cnt += 1
	else:
		if cnt > max_cnt:
			max_cnt = cnt
		cnt = 0
	if i == n - 1:
		max_cnt = max(max_cnt, cnt)
if max_cnt >= k:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
t = input()
k1 = 0
for i in range(n):
	if t[i] == '#':
		k1 = k1 + 1
	elif t[i] == '.':
		k1 = 0
	if k1 >= k:
		print('NO')
		exit()
print('YES')


def ksusha_the_squirrel(n, k, s):
	trace = 0
	for i in range(n):
		if s[i] == '.':
			if i - trace <= k:
				trace = i
			else:
				return False
	return True
[n, k] = map(int, input().split())
s = input()
result = ksusha_the_squirrel(n, k, s)
if result == True:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input().split('.')
print(['NO', 'YES'][len(max(s)) < k])


(n, k) = map(int, input().split())
s = input().strip()
largest = 0
i = 0
while i < n:
	if s[i] == '#':
		j = i
		while j + 1 < n and s[j + 1] == '#':
			j += 1
		largest = max(largest, j - i + 1)
		i = j + 1
	else:
		i += 1
if largest >= k:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
l = list(input())
maxJump = 0
co = 0
for i in range(n):
	if l[i] == '#':
		co += 1
	else:
		maxJump = max(maxJump, co)
		co = 0
if maxJump >= k:
	print('NO')
else:
	print('YES')


(n, k) = list(map(int, input().split()))
if max(list(map(len, input().split('.')))) < k:
	print('YES')
else:
	print('NO')


nk = list(map(int, input().split()))
n = nk[0]
k = nk[1]
string = str(input())
ind = []
for (i, char) in enumerate(string):
	if char == '.':
		ind.append(i)
flag = 1
for i in range(len(ind) - 1):
	if ind[i + 1] - ind[i] > k:
		flag = 0
		break
if flag == 1:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input()
x = 0
for i in range(1, n):
	if s[i] == '#' and x + 1 < k:
		x += 1
	elif x + 1 == k and s[i] == '#':
		print('NO')
		x += 1
		break
	if s[i] == '.':
		x = 0
if x != k:
	print('YES')


def func():
	(n, k) = list(map(int, input().split()))
	s = input()
	i = c = 0
	while i < n:
		if s[i] == '#':
			c += 1
		else:
			c = 0
		if c == k:
			return 'NO'
		i += 1
	return 'YES'
print(func())


import sys
ii = lambda : sys.stdin.readline().strip()
idata = lambda : [int(x) for x in ii().split()]

def solve():
	(n, k) = idata()
	s = ii()
	la = 0
	for i in range(1, n):
		if s[i] == '.':
			la = i
		elif i - la >= k:
			print('NO')
			return
	print('YES')
	return
for t in range(1):
	solve()


(n, k) = map(int, input().split())
s = input()
counter = 0
flag = 'YES'
for i in range(1, n):
	if counter >= k:
		flag = 'NO'
	if s[i] == '#':
		counter += 1
	else:
		counter = 0
print(flag)


from sys import stdin

def read():
	line = stdin.readline()
	if line == '':
		exit()
	return line

def main():
	while True:
		(n, k) = map(int, read().split())
		m = read()
		dp = [0] * n
		dp[0] = 1
		cnt = 1
		for i in range(1, n):
			dp[i] = 1 if cnt > 0 and m[i] == '.' else 0
			cnt += dp[i]
			if i - k >= 0:
				cnt -= dp[i - k]
		if dp[n - 1] == 1:
			print('YES')
		else:
			print('NO')
main()


(n, k) = map(int, input().split())
print('YNEOS'['#' * k in input()::2])


(n, k) = map(int, input().split())
s = input()
if s.find('#' * k) != -1:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split(' '))
road = input()
mm = 0
ll = True
for pp in road:
	if pp == '#':
		mm += 1
	else:
		mm = 0
	if mm >= k:
		ll = False
print('YES') if ll else print('NO')


(n, k) = list(map(int, input().split()))
path = input()
temp = []
c = 0
for value in path:
	c = c + 1
	if value == '.':
		temp.append(c)
	else:
		continue
result = float('-inf')
for i in range(len(temp) - 1):
	result = max(result, temp[i + 1] - temp[i])
if result <= k:
	print('YES')
else:
	print('NO')


t = input()
t = t.split(' ')
inpList = []
for i in range(len(t)):
	inpList.insert(i, int(t[i]))
s = input()
s = s.split('.')
crossOver = True
while i in range(len(s)) and crossOver:
	if len(s[i]) >= inpList[1]:
		crossOver = False
	i += 1
if crossOver:
	print('YES')
else:
	print('NO')


from collections import deque
from collections import OrderedDict
import math
import sys
import os
from io import BytesIO
import threading
import bisect
import heapq
input = lambda : sys.stdin.readline().rstrip('\r\n')
(n, k) = map(int, input().split())
s = input()
ceq = 0
for i in range(n):
	if s[i] == '#':
		ceq += 1
		if ceq == k:
			print('NO')
			break
	else:
		ceq = 0
else:
	print('YES')


(n, k) = map(int, input().split())
j = 0
for i in input():
	if i == '.':
		j = 0
	else:
		j += 1
		if j >= k:
			print('NO')
			break
else:
	print('YES')


(m, n) = map(int, input().split())
a = list(input().split('.'))
print(['YES', 'NO'][len(max(a)) >= n])


def main():
	from re import findall
	[__, k] = [int(_) for _ in input().split()]
	road = input()
	print('YES' if '#' not in road or max((len(s) for s in findall('#+', road))) < k else 'NO')
main()


import sys
import math
(n, k) = [int(x) for x in sys.stdin.readline().split()]
an = sys.stdin.readline()
z = 0
for i in range(n):
	if an[i] == '.':
		if i + 1 - z <= k:
			z = i + 1
if n + 1 - z <= k:
	print('YES')
else:
	print('NO')


import sys
import math
get_string = lambda : sys.stdin.readline().strip()
get_int_list = lambda : list(map(int, sys.stdin.readline().strip().split()))
get_int = lambda : int(sys.stdin.readline())
(n, k) = get_int_list()
s = get_string()
if '#' * k in s:
	print('NO')
else:
	print('YES')


k = int(input().split(' ')[1])
s = input().split('.')
flag = True
for i in s:
	if len(i) >= k:
		flag = False
		break
print('YES' if flag else 'NO')


(n, k) = map(int, input().split())
s = input()
c = 0
if s[-1] == '#':
	print('NO')
else:
	a = 0
	q = 0
	for a in range(n):
		if s[a] == '#':
			q += 1
			if q == k:
				c = 1
				break
		else:
			q = 0
	if c == 0:
		print('YES')
	else:
		print('NO')


def s():
	[n, k] = list(map(int, input().split()))
	d = [0] * (n + 2)
	c = 2
	d[1] = 1
	for ch in input():
		d[c] = d[c - 1]
		if ch == '.' and d[max(0, c - k - 1)] != d[c]:
			d[c] += 1
		c += 1
	print('YES' if d[-1] != d[-2] else 'NO')
s()


(n, m) = map(int, input().split())
i = input()
print(['YES', 'NO']['#' * m in i])


(n, k) = map(int, input().split())
l = list(input())
i = 0
c = 0
while i < n:
	if l[i] == '#' and l[i - 1] == '.':
		i -= 1
		for j in range(1, k + 1):
			if l[i + j] == '.':
				i += j
				break
		else:
			c = 1
			break
	i += 1
if c == 1:
	print('NO')
else:
	print('YES')


from sys import stdin, stdout
from collections import *
from math import gcd, floor, ceil

def st():
	return list(stdin.readline().strip())

def li():
	return list(map(int, stdin.readline().split()))

def mp():
	return map(int, stdin.readline().split())

def inp():
	return int(stdin.readline())

def pr(n):
	return stdout.write(str(n) + '\n')
mod = 1000000007
INF = float('inf')

def solve():
	(n, k) = mp()
	s = st()
	i = 0
	while i < n:
		if s[i] == '#':
			c = 0
			while i < n and s[i] == '#':
				i += 1
				c += 1
			if c >= k:
				pr('NO')
				return
		else:
			i += 1
	pr('YES')
for _ in range(1):
	solve()


(n, k) = map(int, input().split())
s = input()
t = 0
for item in s:
	if item == '#':
		t += 1
		if t == k:
			print('NO')
			return
	else:
		t = 0
print('YES')


(n, k) = input().split()
s = input()
count = 0
max = 0
if s.count('#') == 1 and int(k) <= 1:
	max = 1
for i in range(int(n) - 1):
	if s[i] == '#' and s[i + 1] == '#':
		count += 1
	else:
		if max < count:
			max = count
		count = 0
if max == 0:
	print('YES')
elif max + 1 < int(k):
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input()
curr = 0
truth = True
while s.find('.', curr + 1) != -1:
	temp = curr
	curr = s.find('.', temp + 1)
	if curr - temp > k:
		truth = False
		break
print(('NO', 'YES')[truth])


(n, jump) = map(int, input().split())
rocks = 0
for (i, ch) in enumerate(input()):
	if ch == '#':
		rocks += 1
		if rocks == jump:
			print('NO')
			import sys
			sys.exit()
	else:
		rocks = 0
print('YES')


from sys import stdin
max_val = int(10000000000000.0)
min_val = int(-10000000000000.0)

def read_int():
	return int(stdin.readline())

def read_ints():
	return [int(x) for x in stdin.readline().split()]

def read_str():
	return input()

def read_strs():
	return [x for x in stdin.readline().split()]
(points, jumps) = read_ints()
print(['NO', 'YES'][len(max(read_str().split('.'), key=len)) < jumps])


def check(string, sub_str):
	if string.find(sub_str) == -1:
		print('YES')
	else:
		print('NO')
(a, b) = map(int, input().split())
c = input()
d = b * '#'
check(c, d)


(n, k) = map(int, input().split())
a = input()[:n]
(mx, cnt) = (0, 0)
for i in range(n):
	if a[i] == '#':
		cnt += 1
	else:
		mx = max(mx, cnt)
		cnt = 0
if mx >= k:
	print('NO')
else:
	print('YES')


def bruh():
	(n, k) = [int(i) for i in input().split()]
	s = input()
	cur = 0
	prev = True
	while cur != n - 1 and prev:
		prev = False
		for i in range(min(n - 1, k + cur), cur, -1):
			if s[i] == '.':
				cur = i
				prev = True
				break
	if cur == n - 1:
		print('YES')
	else:
		print('NO')
bruh()


(n, m) = [int(i) for i in input().split()]
s = str(input())
e = '#' * m
if e in s:
	print('NO')
else:
	print('YES')


(n, k) = list(map(int, input().split()))
s = list(input())
freq = [0] * len(s)
j = 0
flag = 0
for i in range(len(s)):
	if s[i] == '#':
		freq[j] += 1
	else:
		j += 1
false = False
for i in range(len(freq)):
	if freq[i] > k - 1:
		false = True
		break
print('NO' if false else 'YES')


(n, k) = map(int, input().split())
s = input()
t = '#' * k
print('NO' if s.count(t) else 'YES')


(n, k) = tuple(map(int, input().split()))
t = [_ for _ in input().split('.') if len(_) >= k]
if t:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
s = input()
count = 0
ans = ''
t = 0
for i in range(n):
	if s[i] == '#' and count < k:
		ans += s[i]
		count += 1
	elif s[i] == '#' or count >= k:
		print('NO')
		t = 1
		break
	elif s[i] == '.':
		count = 0
if t == 0:
	print('YES')


(n, k) = map(int, input().split())
s = input()
if n == 2:
	print('YES')
else:
	a = []
	for i in s:
		a.append(i)
	cnt = 1
	m = 1
	for i in range(n - 1):
		if a[i] == a[i + 1] and a[i] == '#':
			cnt = cnt + 1
		elif cnt > m:
			m = cnt
			cnt = 1
		else:
			cnt = 1
	if m >= k:
		print('NO')
	else:
		print('YES')


values = input().split()
(number, jump) = (int(values[0]), int(values[1]))
sectors = input()
current = 0
passable = True
while current < number - jump:
	contest = sectors[current:current + jump + 1]
	if '.' not in contest[1:]:
		passable = False
		break
	else:
		offset = contest[1:][::-1].index('.')
		current += jump - offset
if passable:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input()
l = []
for i in range(len(s)):
	if s[i] == '.':
		l.append(i)
t = []
for i in range(len(l) - 1):
	t.append(l[i + 1] - l[i])
if max(t) <= k:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = input()
visited = set()
q = [0]
visited.add(0)
while len(q) > 0:
	x = q.pop()
	if x == n - 1:
		print('YES')
		exit(0)
	for i in range(1, k + 1):
		if x + i not in visited and x + i < n and (s[x + i] == '.'):
			visited.add(x + i)
			q.append(x + i)
print('NO')


(n, k) = map(int, input().split())
x = input()
res = 0
count = 0
for i in range(n):
	if x[i] == '#':
		count += 1
		if count > res:
			res = count
	else:
		count = 0
if res < k:
	print('YES')
else:
	print('NO')


(n, k) = map(int, input().split())
s = str(input())
test = 0
if k * '#' in s:
	print('NO')
else:
	print('YES')


(X, Road) = (list(map(int, input().split())), input())
print('YES' if '#' not in Road[0] + Road[-1] and X[1] * '#' not in Road else 'NO')


(n, k) = map(int, input().split())
a = input()
(mx, cur) = (0, 0)
for ch in a:
	if ch == '.':
		mx = max(mx, cur)
		cur = 0
	else:
		cur += 1
print('YES') if mx < k else print('NO')


(n, k) = map(int, input().split())
l = str(input())
rs = 0
ok = True
for i in l:
	if rs == k:
		ok = False
		break
	if i == '#':
		rs += 1
	else:
		rs = 0
if ok:
	print('YES')
else:
	print('NO')


(N, K) = map(int, input().split())
obs = 0
cur = 0
S = input()
for s in S:
	if s == '.':
		cur = 0
	else:
		cur += 1
		obs = max(cur, obs)
if K <= obs:
	print('NO')
else:
	print('YES')


(n, k) = tuple(map(int, input().split()))
st = input()
s = '#' * k
if s in st:
	print('NO')
else:
	print('YES')


print('YES' if list(map(int, input().split()))[1] * '#' not in input() else 'NO')


(n, k) = map(int, input().split())
s = list(input())
a = []
for i in range(n):
	if s[i] == '.':
		a.append(i)
diff = []
for i in range(1, len(a)):
	diff.append(a[i] - a[i - 1])
if max(diff) > k:
	print('NO')
else:
	print('YES')


I = lambda : map(int, input().split())
(n, m) = I()
s = input()
res = c = 0
for i in s:
	if i == '#':
		c += 1
		if c == m:
			res = 1
			break
	else:
		c = 0
print('YNEOS'[res::2])


def main():
	(n, m) = [int(v) for v in input().split()]
	v = input()
	mv = 0
	while True:
		j = False
		for i in range(m, 0, -1):
			if mv + i >= n:
				print('YES')
				return
			if v[mv + i] == '.':
				mv = mv + i
				j = True
				break
		if not j:
			print('NO')
			return
main()


from sys import stdin

def read():
	return map(int, stdin.readline().split())
(n, k) = read()
print('NO' if '#' * k in stdin.readline() else 'YES')


(n, k) = list(map(int, input().split()))
a = input().split('.')
u = 0
for i in range(len(a)):
	if '#' in a[i]:
		if len(a[i]) + 1 > k:
			print('NO')
			u += 1
			break
	if u > 0:
		break
if u == 0:
	print('YES')


(n, k) = [int(j) for j in input().split()]
s = str(input())
(pointer, res) = (0, 0)
while pointer < n:
	if s[pointer] == '#':
		count = 0
		while pointer < n:
			if s[pointer] == '#':
				count += 1
				pointer += 1
			else:
				break
		res = max(res, count)
	else:
		pointer += 1
if res < k:
	print('YES')
else:
	print('NO')


(n, p) = map(int, input().split())
a = input()
if '#' * p in a:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
s = list(input())
l = []
for i in range(n):
	if s[i] == '.':
		l.append(i)
c = 0
for i in range(len(l) - 1):
	if l[i + 1] - l[i] > k:
		c = 1
		break
if c == 1:
	print('NO')
else:
	print('YES')


(n, m) = map(int, input().split())
s = input()
if '#' * m in s:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
z = '#' * k
l = str(input())
if z in l:
	print('NO')
else:
	print('YES')


from sys import stdin

def iinput():
	return int(stdin.readline())

def minput():
	return map(int, stdin.readline().split())

def linput():
	return list(map(int, stdin.readline().split()))
(n, k) = minput()
s = input()
i = 0
if '#' * k in s:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
l = input()
h = []
count1 = 0
for i in l:
	if i == '#':
		count1 += 1
		h.append(count1)
	elif i == '.':
		count1 = 0
		h.append(count1)
if max(h) >= k:
	print('NO')
elif max(h) < k or len(h) == 0:
	print('YES')


nk = input().split()
n = int(nk[0])
k = int(nk[1])
m = 0
t = 0
s = input()
for i in range(n):
	if s[i] == '#':
		t += 1
	else:
		m = max(m, t)
		t = 0
if m >= k:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
s = input()
g = 0
f = 0
for i in range(0, n):
	if s[i] == '.':
		if i - g <= k:
			g = i
		else:
			print('NO')
			f = 1
			break
if f == 0:
	print('YES')


n = input().split()
test = '#'
road = input()
test *= int(n[1])
if test in road:
	print('NO')
else:
	print('YES')


cnt = lambda s, i: s.count(i)
ii = lambda : int(input())
si = lambda : input()
f = lambda : map(int, input().split())
il = lambda : list(map(int, input().split()))
(n, k) = f()
s = list(si().split('.'))
s.pop(0)
s.pop(-1)
for i in s:
	if len(i) >= k:
		exit(print('NO'))
print('YES')


(n, k) = map(int, input().split())
b = input()
c = ''
if k > n:
	k = n
for x in range(k):
	c += '#'
if c in b:
	print('NO')
else:
	print('YES')


def squirrel(path, k):
	if k > 1:
		L = []
		for i in range(0, len(path) - 1):
			if path[i] == path[i + 1] == '#':
				L.append(i)
			else:
				L = []
			if len(L) >= k - 1:
				return 'NO'
	else:
		for i in range(0, len(path) - 1):
			if path[i] == '#':
				return 'NO'
	return 'YES'
nk = input().split()
n = int(nk[0])
k = int(nk[1])
path = str(input())
s = squirrel(path, k)
print(s)


(n, k) = input().split()
n = int(n)
k = int(k)
str = input()
i = 1
final = 1
while i != n:
	j = i + 1
	while j <= i + k:
		if str[j - 1] == '.':
			final = j
			i = j
			break
		j += 1
		if j == i + k + 1:
			print('NO')
			exit()
	if i != j:
		i = i + 1
print('YES')


(n, k) = [int(x) for x in input().split(' ')]
if '#' * k in input():
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
l = list(input())

def func(n, k, l):
	x = []
	for i in range(n):
		if l[i] == '.':
			if len(x) == 0:
				x.append(i)
			elif i - x[-1] > k:
				return 'NO'
			else:
				x.append(i)
	return 'YES'
print(func(n, k, l))


(n, k) = map(int, input().split())
s = input()
list = []
i = 0
while i < n:
	p = 0
	while s[i] == '#':
		p += 1
		i += 1
	list.append(p)
	i += 1
if max(list) < k:
	print('YES')
else:
	print('NO')


(a, b) = map(int, input().split())
s = input()
obs = b * '#'
if obs in s:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
count = 0
a = input()
for i in range(len(a)):
	if count >= k:
		print('NO')
		break
	if a[i] == '#':
		count += 1
	else:
		count = 0
else:
	print('YES')


(_, k) = map(int, input().split())
print('NO' if '#' * k in input() else 'YES')


(n, k) = list(map(int, input().split(' ')))
s = input()
print('YES' if '#' * k not in s else 'NO')


class CodeforcesTask299BSolution:

	def __init__(self):
		self.result = ''
		self.n_k = []
		self.road = ''

	def read_input(self):
		self.n_k = [int(x) for x in input().split(' ')]
		self.road = input()

	def process_task(self):
		if '#' * self.n_k[1] in self.road:
			self.result = 'NO'
		else:
			self.result = 'YES'

	def get_result(self):
		return self.result
Solution = CodeforcesTask299BSolution()
Solution.read_input()
Solution.process_task()
print(Solution.get_result())


(n, k) = [int(x) for x in input().split()]
p = input()
if p.find('#' * k) == -1:
	print('YES')
else:
	print('NO')


b = input().split()
n = int(b[0])
k = int(b[1])
m = list(input())
kol = 0
maxkol = 0
for i in range(n):
	if kol > maxkol:
		maxkol = kol
	if m[i] == '#':
		kol += 1
	else:
		kol = 0
print('NO' if maxkol >= k else 'YES')


from math import gcd
(n, k) = map(int, input().split())
s = input()
l = []
j = 0
c = 0
for i in range(n):
	if s[i] == '#' and i == j:
		c += 1
		j += 1
	elif c != 0:
		l.append(c)
		c = 0
		j = i + 1
	else:
		j = i + 1
if c != 0:
	l.append(c)
f = 0
for i in l:
	if i >= k:
		f = 1
		break
if f == 0:
	print('YES')
else:
	print('NO')


(a, b) = map(int, input().split())
s = input()
f = 0
t = s.split('.')
for i in t:
	if len(i) > b or len(i) == b:
		f = 1
		break
	else:
		f = 0
if f == 1:
	print('NO')
else:
	print('YES')


(n, k) = map(int, input().split())
s = input()
ans = 0
c = 0
for i in range(n):
	if s[i] == '#':
		c += 1
	else:
		ans = max(ans, c)
		c = 0
if ans >= k:
	print('NO')
else:
	print('YES')


(N, K) = [int(x) for x in input().split()]
road = input()
rocks = []
count = 0
for i in road:
	if i == '.':
		rocks.append(count)
		count = 0
	if i == '#':
		count += 1
if max(rocks) >= K:
	print('NO')
else:
	print('YES')


(nstr, distr) = input().split()
n = int(nstr)
dist = int(distr)
roadstr = input()
road = list(roadstr)
i = -1
while i < n - 1:
	if road[i + 1] == '.':
		i += 1
	else:
		j = 1
		mybool = False
		while j <= dist:
			if road[i + j] == '.':
				i += j
				mybool = True
				break
			else:
				j += 1
		if not mybool:
			print('NO')
			exit()
print('YES')


(n, k) = map(int, input().split())
s = input()
long = 0
m = 0
for i in s:
	if i == '#':
		long += 1
	else:
		m = max(m, long)
		long = 0
if k > m:
	print('YES')
else:
	print('NO')


import sys
(n, k) = map(int, input().split(' '))
c = input()
if k > n:
	print('YES')
	exit()
p = 0
for (i, x) in enumerate(c):
	if x == '.':
		d = i
		r = p + k
		if d <= r:
			p = d
		else:
			print('NO')
			exit()
print('YES')


(n, k) = map(int, input().split())
s = input()
c = 0
ma = 0
for i in s:
	if i == '#':
		c += 1
		if ma < c:
			ma = c
	else:
		c = 0
print('YES' if ma < k else 'NO')


(num1, num2) = map(int, input().split())
strong1 = input()
if strong1.find('#' * num2) == -1:
	print('YES')
else:
	print('NO')