import Data.Array.IArray
import Data.Maybe

solve :: (Int,Int) -> (Int,Int) -> Array (Int, Int) Char -> Bool
solve p@(h,w) g a
  | p == g = True
  | otherwise = maybe False (\n -> solve n g a) next
  where
    chk p@(ph,pw) = let (_,(bh,bw)) = bounds a
                     in ph <= bh && pw <= bw && a!p == '#'
    next = let pp = [ p | p <- [(h+1,w),(h,w+1)], chk p]
            in case pp of
                 []  -> Nothing
                 [q] -> Just q
                 _   -> Nothing

main :: IO ()
main = do
    [h,w] <- map read . words <$> getLine :: IO [Int]
    a <- listArray ((1,1),(h,w)) . concat . lines
      <$> getContents :: IO (Array (Int,Int) Char)
    putStrLn $ if solve (1,1) (h,w) a then "Possible" else "Impossible"