PROGRAM MAIN IMPLICIT NONE INTEGER :: H, W, I, J, K, COUNT, X, Y, DX, DY 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 = 2, K DX = U(I) - U(1) DY = V(I) - V(1) COUNT = 0 DO J = 1, K X = U(J) + DX Y = V(J) + DY IF ((X < 1 .OR. X > H) .OR. (Y < 1 .OR. Y > W)) THEN CYCLE END IF IF(S_NUM(X, Y) == 1) THEN COUNT = COUNT + 1 S_NUM(X, Y) = 2 END IF END DO IF (2 * COUNT == K) THEN PRINT *, 'YES' RETURN END IF DO J = 1, K IF(S_NUM(U(J), V(J)) == 2) S_NUM(U(J), V(J)) = 1 END DO END DO PRINT *, 'NO' END PROGRAM MAIN