PROGRAM MAIN IMPLICIT NONE INTEGER :: H, W, I, J, K, L, COUNT, X, Y CHARACTER*50, ALLOCATABLE, DIMENSION(:) :: S INTEGER, ALLOCATABLE, DIMENSION(:, :) :: S_NUM INTEGER, ALLOCATABLE, DIMENSION(:) :: U, V READ *, H, W ALLOCATE(S(H)) ALLOCATE(S_NUM(H, W)) S_NUM = 0 READ *, S DO I = 1, H DO J = 1, W IF (S(I)(J:J) == '#') THEN S_NUM(I, J) = 1 END IF END DO END DO K = SUM(S_NUM) ! PRINT *, K IF (MOD(K, 2) == 1) THEN PRINT *, 'NO' RETURN END IF ALLOCATE(U(K)) ALLOCATE(V(K)) COUNT = 1 DO I = 1, H DO J = 1, W IF(S_NUM(I, J) == 1) THEN U(COUNT) = I V(COUNT) = J COUNT = COUNT + 1 END IF END DO END DO ! PRINT *, U ! PRINT *, V DO I = 0, H - 1 DO J = 0, W - 1 COUNT = 0 DO L = 1, K X = U(L) + I Y = V(L) + J IF (X > H .OR. Y > W) THEN CYCLE END IF IF (S_NUM(X, Y) == 1 .AND. ((X + I > H .OR. Y + J > W) .OR. S_NUM(X + I, Y + J) == 0)) THEN COUNT = COUNT + 1 END IF ! PRINT *, X, Y END DO IF (2 * COUNT == K) THEN PRINT *, 'YES' RETURN END IF ! PRINT *, I, J END DO END DO PRINT *, 'NO' END PROGRAM MAIN