import Control.Applicative
import Control.Monad
import Data.List
import Data.Array.IO

infixr 1 ?
(?) :: Bool -> (a,a) -> a
(?) b t = (if b then fst else snd) t

main = do
  [h,w] <- map read . words <$> getLine :: IO [Int]
  f <- lines <$> getContents

  let
    solve (x,y) =
      if length pre <= 1 then
        if length next == 1 && (x,y) /= (w,h) then solve $ head next
        else if length next == 0 && (x,y) == (w,h) then True
        else False
      else False
      where
        next = filter (\(x1,y1) -> x1<=w && y1<=h && (f!!(y1-1)!!(x1-1) == '#')) [(x+1,y),(x,y+1)]
        pre = filter (\(x1,y1) -> x1>=1 && y1>=1 && (f!!(y1-1)!!(x1-1) == '#')) [(x-1,y),(x,y-1)]

  putStrLn $ (? ("Possible", "Impossible")) (solve (1,1))

