Aimless drive that ya take alone
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 19 most recent journal entries recorded in gebb's LiveJournal:

    Sunday, November 4th, 2012
    3:39 pm
    Математики и программизма псто

    Здравствуйте, дорогие любители математики, программизма, пауков и насекомых.

    — Какого дьявола? — спросит читатель. — Зачем ты приветствуешь сраных любителей сраных насекомых?

    Понимаю твоё негодование, дорогой читатель. Дело в том, что в этом посте мы будем решать задачу про муху и паука. Да, это научно-популярный пост. Сейчас начнётся вот это.

    Задачу я нашёл на projecteuler, если кто-то хочет решить её самостоятельно, немедленно прекращайте читать.

    Итак, задача. Имеем комнату в форме параллелепипеда с размерами a × b × c. В противоположных (по диагонали) углах сидят паук и муха.

    Паук может ползать только по поверхностям и хочет поскорее добраться к мухе, поэтому ползёт по кратчайшему пути (показан на рисунке синей линией).

    — Почему же этот паук не вьёт сеть и не ждёт, пока в неё попадёт муха, как все нормальные пауки? — спросит меня читатель-пауковед.

    Ну, такой уж у нас паук. Он живёт энергией, молодостью, хардкором — он не хочет ждать, он хочет скорее подскочить к мухе и пояснить её криком: “Не люблю ж-ж!” Ну вы понели.

    Вернёмся к задаче. Для параллелепипеда с размерами 6×5×3 длина кратчайшего пути равна 10, однако кратчайший путь не для всех параллелепипедов имеет целую длину.

    Рассматривая все комнаты с целыми размерами a × b × c, , вплоть до максимального M × M × M, можно показать, что число N различных комнат, в которых кратчайший путь является целым числом, равно в точности 2060 для M=100, и что 100 является наименьшим числом, для которого N превышает 2000.

    Найти наименьшее значение M, для которого число различных параллелепипедов с целым кратчайшим путём превышает миллион.

    Такая задача. Решение разбивается на две части: сначала надо найти выражение для кратчайшего пути, а потом наименьшее М.

    Часть первая. Геометрическая

    … в которой мы будем искать кратчайший путь.

    Так как я ненаблюдательный и недогадливый, я решил задачу некрасивым способом, действуя по такому плану.

    1. Обозначить через x координату пересечения траекторией ребра параллелепипеда.
    2. Выразить длину кратчайшего пути через x, записав её как функцию d(x).
    3. Найти выражение для х, обеспечивающего минимум функции d(x).

    Давайте выполним эти действия.

    Некрасивый способ

    Рассмотрим путь по поверхностям, пересекающий одно из трёх рёбер, пока положим, что это ребро длиной a, а потом рассмотрим другие варианты.

    Точкой пересечения ребро делится на отрезки длиной x и a-x, как показано на рисунке. Путь состоит из двух половин. Первая является гипотенузой треугольника с катетами b и x, вторая — гипотенузой треугольника с катетами c и (a-x).

    Вспомним теорему Пифагора и запишем длину такого пути как функцию от x.

    Чтобы найти такое значение x, при котором значение d(x) будет минимально, вспомним школьный курс математики, а именно, что его можно найти, приравняв к нулю производную от d(x) и решив получившееся уравнение.

    Найдём производную от d(x):

    Теперь решим уравнение

    Корни такие

    Корень x2 нам не подходит, потому что мы выбрали x таким образом, что 0<x<a, а неравенство

    может выполняться только при c<0 или b<0, что недопустимо для нормальных комнат (размер не может быть отрицательным).

    Получим минимальную длину, подставив x1 в d(x)

    Рассматривая другие варианты рёбер, пересекаемых путём, как планировали выше, получим ещё два кандидата на кратчайший путь:

    Можно было бы принять такое выражение для кратчайшего пути

    и двигаться дальше, но мы рассмотрим более красивое решение этой части задачи, которое я подсмотрел в другом месте.

    Красивый способ

    Будем рассматривать пути от паука к мухе на развёртке параллелепипеда.

    Из такого построения можно видеть, что возможные пути — гипотенузы в треугольниках со сторонами (la, a, b + c), (lb, b, a + c), (lc, c, a + b).
    То есть (по теореме Пифагора)

    Теперь покажем, что при условии
    a > b > c
    кратчайшим из этих путей является la. Сначала сравним la и lb.

    Неравенство выполняется.

    Теперь сравним la и lc.

    Аналогично.

    Таким образом, кратчайший путь между противоположными вершинами параллелепипеда с размерами a × b × c, проходящий по поверхностям, пересекает самое длинное ребро.
    при .

    Часть вторая. Программистская

    … в которой мы будем писать на моднейшем языке Haskell.

    Теперь найдём минимальное M, для которого число возможных параллелепипедов с целыми размерами и целым кратчайшим путём превышает 1000000. Формулы для M мне вывести не удалось, поэтому будем искать решение с помощью электронного вычислительного компьютера.

    Автор проекта projecteuler утверждает, что для поиска решения любой его задачи можно написать программу, которая будет выполняться меньше минуты на современном компьютере. По опыту знаю, что не всегда это легко сделать: программы, написанные “в лоб”, выполняются очень долго. Но мы попробуем. Писать будем на Haskell, чтобы было интереснее.

    Первое, что приходит в голову — это такое простое решение.

     1module Main where
     2
     3import Data.IORef
     4import Control.Monad
     5
     6isInteger = (0==).snd.properFraction
     7
     8dist a b c = sqrt $ a^2 + (b + c)^2
     9
    10f r m = do
    11   s <- readIORef r
    12   let l = length [()| a<-[m],b<-[1..a],c<-[1..b], isInteger $ dist a b c]
    13   let s' = s+l
    14   writeIORef r (s')
    15   print (m, s')
    16
    17main = do
    18   r<-newIORef 0
    19   mapM_ (f r) [1..]
    

    Что делает эта программа. для каждого M она выводит в консоль накопленное количество различных параллелепипедов, для которых кратчайший путь – целое число. Основную работу делает функция f в строке 12. Для данного M одна сторона параллелепипеда устанавливается равной M, а по двум другим идёт перебор. Найденное число удовлетворительных комбинаций добавляется к накопленному значению. Накопленное значение сохраняется в изменяемой ссылке r (строка 14) и выводится в консоль (строка 15) вместе с текущим значением M.
    Проблема этой программы заключается в том, что работает она медленно. Поначалу она довольно быстро выплёвывает числа в консоль, но уже на четвёртой сотне заметно замедление, а на седьмой – интервал между отдельными значениями измеряется в секундах.

    А причина одна – безблагодатность.

    Ускорить программу можно, учтя следующий факт. Перебирать все возможные b и c для данного a необязательно, потому что если для какой-то пары b и c значение кратчайшего пути – целое число, то оно целое для всех других пар b и c, дающих такую же сумму. Поэтому можно перебирать значения суммы i, и каждое значение, дающее целочисленный путь, учитывать столько раз, сколько существует способов представить i в виде суммы таких b и c, что

    Это число способов можно выразить аналитически, хотя формула у меня получилась не очень красивая, см. функцию parts в следующей программе.

    Выполнив эту простую оптимизацию, получаем существенный прирост скорости.

     1module Main where
     2
     3import Control.Monad.State
     4import Data.Maybe
     5import Control.Monad.ListM
     6
     7distSquared a i = a^2 + i^2
     8
     9parts n m
    10   | n>m = 1 + m - ((n`div`2)+ if odd n then 1 else 0)
    11   | otherwise = (n`div`2)
    12
    13isSquare x = (floor $ sqrt $ fromIntegral x)^2 == x
    14
    15upd a = do
    16   (s,_) <- get
    17   let s' = s + sum [parts i a| i<-[2..2*a], isSquare $ distSquared a i]
    18   put (s',a)
    19   return s'
    20
    21main = do
    22   let s = runState process (0,0) :: (Maybe Int, (Int, Int))
    23   print $ snd s
    24   where process = findM (fmap (>1000000) . upd) [1..]
    

    Эта программа не выводит в консоль все промежуточные M, а печатает только первое значение, удовлетворяющее условию задачи. На моём компьютере она находит ответ за три секунды.

    Пацаны в форуме, посвящённом этой задаче, предлагали более модный способ ускорения программы – итерироваться только по пифагоровым тройкам, но мне было лень это реализовывать.

    Tuesday, April 10th, 2012
    10:36 pm
    Ноучная дискуссия за букву ё
    [21:05]<JCU> Придумал новое слово ИНЖЕНЕРД. Гугл молчит вроде.
    [21:12]<Gebb> Хорошее слово!
    [21:13]<Gebb> Если это комбинация слов nerd и инженер, то последняя гласная - Ё.
    [21:14]<JCU> мне больше нравится думать, что это будет сочетанием ИНЖЕНЕРа с НЕРДОМ. В тех же интернетах это слово пишется именно так.
    [21:16]<JCU> Так красивше
    [21:16]<JCU> ну, или красившее.
    [21:27]<Gebb> Потому что все забивают на букву ё. Когда мы придём к власти, это будет караться чтением Войны и мира.
    [21:30]<Gebb> На грамоте.ру читал статью, рассматривающую аргументы за и против постоянного употребления буквы ё. Главный аргумент против - что придётся в новых изданиях Пушкина в его словечки типа "вдохновленный" вставлять ё и тем портить труды классика.
    [21:31]<Gebb> Как по мне - нахуй классика!
    [21:34]<JCU> Хм. Тогда придется придумать новую кару за забитие на Ё. Война и мир уже не подходИт.
    [21:35]<Gebb> Лучше уж пусть люди знают, как читать и писать слова нёрд и афера.
    Ну, можно Сартра там, например, заставлять читать под саундтрек из беготтена.
    [21:37]<JCU> Хм. Тогда объясните мне чем выступающий за правильность написания слов нёрд и афера отличается от радетелей за классику.
    [21:39]<Gebb> Только практическими соображениями.
    [21:40]<Gebb> Разве нас может ебать соблюдение рифмы в пиздострадальческих виршах?
    [21:41]<JCU> Это напомнило мне остроконечников и тупоконечников.
    [21:41]<Gebb> А то, что миллионы людей ошибаются в написании и/или произношении сотен слов - это нас может и должно ебать.
    [21:42]<Gebb> То, что меня лично порой вводят в заблуждение, когда я читаю слово типа Шредингер.
    [21:42]<Gebb> Это вообще эпик фейл. Не думаю, что это эквивалентного масштаба проблемы. В отличие от остроконечников.
    [21:46]<Gebb> А таких ребят как Геббельс и Геринг - тех вообще навсегда покоцали.
    [21:48]<Gebb> Как можно мириться с такой исторической несправедливостью? Нет, только Сартр, только в сортире, только под биготтена.
    [21:50]<Gebb> Ну, ладно, если фашистов не уважаете - я пойму, но таким же образом исковерканный Рентген-то должен быть вам близок по духу!
    [21:51]<Gebb> Нет, нет, нет, JCU, не спорьте. Сартр, Сартр, Сартр.
    [21:52]<JCU> А. Тогда так. Суть слов первична. Правила написания/произношения вторичны. Все правила призваны соблюдать единообразие и способствовать быстрому и правильному пониманию слов. То есть позволяют ИЗБЕЖАТЬ ИСКАЖЕНИЙ. ИСКАЖЕНИЙ, но не ПОТЕРИ СУТИ слов. "Пиздастрадальческие вирши" являются примером владения словом, умения выражать чувства и мысли. В то время как правила правописания, конечно, лишь СПОСОБСТВУЮТ возможности оценить это владение и умение, но никак не ЗАМЕНЯЮТ их.
    [21:54]<Gebb> Слова с е и ё - два разных слова порой. То есть, вот таким образом проебав букву, вы рискуете быть непонятым, потенциально с печальными последствиями. Такого быть не должно.
    [21:55]<Gebb> И если придётся послать нахуй пиздострадальца - мы пошлём.
    [21:56]<JCU> Я ничего против Геббельса и Геринга не имею. Также полагаю, что их ПОКОЦАННОСТЬ связана не столько с правилами русского языка и, даже, с правилами перевода с немецкого на русский, сколько с идеологическими правками. То есть, скорее всего, имело место искажение СУТИ их слов. А как там с е и ё уже не так важно.
    [22:01]<Gebb> Я склонен не согласиться с этой гипотезой. Нет сути в фамилиях. Скорее всего банальный проёб буквы ё, как и в остальных случаях, обычное дело.
    Tuesday, December 20th, 2011
    3:17 am
    Скорби псто
    Щас почитал одну статью, в которой пацаны решают задачу кластеризации: есть множество точек на плоскости, предположительно полученных из N разных двумерных нормальных распределений. Надо узнать N. Википедия пишет, что подойти к этой задаче можно с точки зрения теории передачи сообщений, найдя модель, обеспечивающую минимальную длину сообщения, а статья объясняет, как можно набору точек и N сопоставить длину сообщения.

    Вот рисунок для N=3:



    Так вот, чем дальше читал, тем больше восхищался пацанчиками, которые, обладая огромным багажом знаний, преодолевают через каждые две строчки препятствия, выглядящие для меня тупиками, просто извлекая очередного кролика из шляпы: то информацию по Фишеру, то всяческие гессианы и другие непонятные операции с матрицами, то распределение Дирихле, то детерминированный отжиг. С поразительной лёгкостью у них куски паззла складываются в красивую картину. Завидую им: когда-то я надеялся заполучить такие же умения, хотел стать учёным. Но фэйл: я стал ремесленником.

    Далее привожу стенограмму заседания на эту тему двух карликов мысли, детей русской клептократии - меня и г-на xxx (он преподаватель в вузе).

    [02:07]<Gebb> Они интеллектуальная элита, а мы - большинство.
    [02:08]<xxx> не хочу быть быдлооооооом
    [02:08]<xxx> хочу илитой
    [02:08]<Gebb> Мы не можем в науку, но с этим надо как-то жить.
    [02:09]<Gebb> Компенсировать избытком беспорядочных половых связей. Или порядочных.
    [02:09]<xxx> наматывать на винт анусы?
    [02:10]<Gebb> Например. В уме при этом фантазируя о формулах.
    [02:10]<Gebb> (Исключительно, чтобы продержаться подольше и доставить даме удовольствие.)
    [02:11]<Gebb> А потом, глядишь, и момент озарения:
    - Так, пошла на хуй, шлюха, где блокнот, у меня тут эврика, блядь!
    [02:12]<xxx> так и хочу!!!1111
    [02:14]<Gebb> Не будет этого, мы все умрём тупыми и бесталанными. Если не зделол чего-то значимого до 30 лет, уже и не сделаешь: интеллектуальный пик был пять лет назад, теперь медленная агония.
    [02:14]<xxx> плачу
    [02:15]<xxx> за что так с нами судьба?!
    [02:15]<Gebb> Скорблю вместе с тобой, ты - это я, бро.
    Tuesday, November 6th, 2007
    6:06 am
    Насколько любовь зла?
    Здравствуйте, уважаемые любители кино и театра. Точнее, нет, уважаемые любители театра идут на хуй, потому что театр ваш — гогно, а остальным я щас, как всегда, расскажу научно-популярные вещи. Много букаф. Ноучная стотья.Collapse )
    Saturday, October 13th, 2007
    6:03 pm
    Халява, сэр
    6.2 kb
    Пришла по почте книга, которую я и не надеялся получить. Один сайт проводил рекламную акцию, можно было заказать любую книгу на тему "программирование и системное администрирование" в любом из российских интернет-магазинов. Я подумал, что это обман, но решил, что ничего не теряю, и заказал. Не обманули.
    Книга толстенная (на снимке рядом с ней для сравнения стоит моя флешка) и, соответственно, дорогая. Помимо неё прислали карточку-скидку 10% в bolero.ru.
    Saturday, September 15th, 2007
    12:24 pm
    Про работу
    Как сказал бы Кайл, вчера мы многое поняли.
    Если вы напряжённо работали (да попросту еблись как конь) несколько дней, а начальство, оценивая результаты вашего труда, начинает свою речь с фразы "называя вещи своими именами", то, скорее всего, напрасно вы рассчитываете на похвалу или поощрение.
    Friday, August 31st, 2007
    12:28 pm
    Тэзд.
    Играюсь с imified (что я перевожу как имифицированный). Бот добавляется в контакт-лист и предоставляет доступ к куче фич таких как заметки, напоминания, туды (TODOs), пощенье в блог. Всё это прямо из IM-клиента. Для жабберистов JID бота imified@imified.com .
    Подробности здесь http://www.imified.com/index.htm .
    Thursday, July 19th, 2007
    2:11 am
    Сорокин-Щи-стайлъ
    Зафиксировать деятеля - и веслом по фундаментальному.

    Current Mood: Нет. Или другое.
    Thursday, June 14th, 2007
    4:18 pm
    Историческое открытие.
    В статье о латинском произношении на википедии можно прочесть следующее.
    Length was distinctive in Latin. For example anus (old woman) or ānus (ring, anus) vs. annus (year).

    ā – это долгое а, если кто-то из читателей этого научного журнала вдруг лох и в латинском не шарит.

    Так вот, о чём нам всё это говорит? Конечно же, о том, что древнеримская женщина в процессе эксплуатации претерпевала изменения, приобретая к старости свойства, в связи с которыми старых женщин лаконичные римляне называли просто anus.

    В свете открывшейся научной истины я хочу, чтобы современные женщины обратили внимание на мудрость предков и были более раскованы в экспериментах.
    Saturday, February 24th, 2007
    2:50 am
    Стих пришёл.
    Кто не любит Южный Парк
    Тот сгорит, как Жанна Д'арк.
    Tuesday, February 20th, 2007
    6:05 pm
    Новое выражение придумал.
    Вместо грубого, неэстетичного "ёбанаврот" надо говорить "ёбаный ворд".
    Monday, February 19th, 2007
    2:19 pm
    О профессиях.
    Сразу предупреждаю, пост аллегорический.
    Вот, предположим, есть некий вымирающий вид. Саблезубый баклан, например. Осталось всего два представителя этого вида на всей планете. К счастью, разнополых. Специальные гринписовцы отлавливают этих особей, садят в клетку и кормят виагрой, чтоб те сношались и размножались. Предположим также, что один представитель (который мужик) оказался довольно пожилой. Допустим, что он не выдержал эмоционального и физического напряжения и скончался после первого же акта. Женская же особь, допустим, снесла яйца (плод любви с покойным бакланом) и склевала их ночью. А чо, бывает у птиц такое; не знаю, почему. Так что допустим. Естественно, наутро служители зоопарка видят следы акта вопиющего вандализма, разрушившего все их надежды на спасение вида, и присылают специального человека с миниганом, который делает из бедной курицы облачко перьев и лужицу крови. Мне интересно, как профессия этого человека называется. Я хочу работать им.

    Кто понял аллегорию – молодец. Потому что я лично не понимаю. Бу-га-га!
    Friday, November 17th, 2006
    10:05 am
    Мне кажется,
    я с каждым днем становлюсь немного добрей.

    ИДИТЕ ВСЕ НАХУЙ, СДОХНИТЕ, СУКИ!!



    Извините, вырвалось. Я еще не то, чтобы совсем добрый.
    Friday, October 6th, 2006
    3:27 am
    У меня штоле лыжи не едут?
    Сидел тут, думал. Херня какая-то. Вот, к примеру, есть два чувака. Договорились встретиться. Но так, своеобразно договорились. Один приходит на место встречи в промежутке от 0:00 до 1:00 (с равной вероятностью в любой момент), ждет 10 минут и уходит. Другой поступает точно так же. Какова вероятность того, что они встретятся? Задача эта разъясняется чуть ли не на самых первых занятиях по теории вероятности. Действительно, легко показать, что вероятность встречи равна 11/36. А если условия немножко подмандить? Например, так уж случилось, что первый оказался полным козлом. И будучи таковым, решил, что нуивонах, приду в промежутке не с 0:00 до 1:00, а с 0:00 до 0:30, подожду 10 минут и слиняю, а второй оказался честным, поэтому он всегда действует в соответствии с первоначальными условиями задачи. Итак, что мы имеем, второй приходит в любой момент часа, ждет 10 минут и уходит, первый приходит в любой момент первых 30 минут, тоже ждет 10 минут и уходит. И какова же теперь вероятность встречи?
    Сюрпри-из! 11/36. По всем моим расчетам так выходит. То бишь, первый чувак, наглый читер, выкроил себе полчаса в расписании на халяву, совершенно не уменьшив при этом вероятность встречи? И где справедливость в этом мире? Но это еще не все сюрпризы. Если эта гадкая еврейская морда (первый) вдруг задумается на секунду, его (о, чудо!) кольнет совесть, и он решит прийти не с 0:00 до 0:30, а с 0:00 до 0:50, то вероятность встречи станет 19/60, что даже больше, чем при первоначальных условиях задачи. И как вам такой гешефт? Это ж вообще какое-то фундаментальное кидалво! Подонок в наглую косит, а вероятность встречи увеличивается!

    Надеюсь, я где-то допустил ошибку, и мир устроен не так подло. Потому что иначе нет совершенно никакой возможности моей честной и глубоко нравственной натуре существовать при таких законах бытия. Придется убить всех людей.

    Всем превед!

    P.S.: Весь трагизм ситуации заключается в том, что расчеты очень простые, ошибиться там просто негде, так что я не ошибся.

    UPD: Для сомневающихся выкладываю поясняющий рисунок. На рисунке изображено пространство исходов, цветом выделена область благоприятных исходов (область значений t1 и t2, при которых пайщики-концессионеры встречаются; t1 - время прихода первого, t2 - время прихода второго).
    Ситуация А. Всё, как в первоначальных условиях.
    Ситуация B. Первый приходит в первые 30 минут, ждет 10 минут и уходит; второй приходит в првые 60 минут, тоже ждет 10 минут и уходит.
    поясняющий рисунок

    Current Mood: што песдетс
    Friday, September 1st, 2006
    11:56 pm
    9/11
    Скоро же того. 9/11. А многие ли знают, что это такое? Все, конечно, в курсе, что два самолета 11 сентября какого-то там года врезались в два каких-то похожих друг на друга небоскреба, принадлежавших Всемирному университету потребительской кооперации (или типа того). Но мне не нравится, что это событие называют именно 9/11. Формат даты с не совпадает с милым русскому сердцу ДД/ММ. Поэтому в России предлагаю называть это событие по-другому. Исключительно, чтобы помнили.
    Теперь по поводу нового названия. Это же хлопцы из Аль-Каиды авиашоу устроили, да? Арабы, значит. А можно ли арабов называть хачиками? Думаю, можно, ведь они такие же звери стрёмные.
    Ввиду всего вышесказанного предлагаю такое название для 9/11: хачи прилетели.

    Попрощаться хочу словами великого американского поэта и культурного деятеля Олежы (Ali G). Ну, вообще-то одним словом: "БУМ-М!"
    Saturday, August 19th, 2006
    3:17 pm
    Это ж про меня! Гыгы.
    С башорга.


    A woman has a close male friend. This means that he is probably interested in her, which is why he hangs around so much. She sees him strictly as a friend. This always starts out with, you're a great guy, but I don't like you in that way. This is roughly the equivalent for the guy of going to a job interview and the company saying, You have a great resume, you have all the qualifications we are looking for, but we're not going to hire you. We will, however, use your resume as the basis for comparison for all other applicants. But, we're going to hire somebody who is far less qualified and is probably an alcoholic. And if he doesn't work out, we'll hire somebody else, but still not you. In fact, we will never hire you. But we will call you from time to time to complain about the person that we hired.
    Thursday, August 10th, 2006
    2:31 pm
    Tuesday, August 1st, 2006
    3:18 am
    Про тру-миталъ
    Сидел я как-то, почитывал научно-популярную литературу, и вдруг меня посетила идея о создании тру-металлической группы. Чтоб что-нибудь эдакое – настоящее. Хаир, цепи, черепа. Это притом, что я не умею играть ни на одном инструменте, петь тоже не умею, но ведь эти качества, в сущности, не так важны, когда речь идет о тру-металле. В общем, было принято решение создать такой неимоверной крутизны группу, чтоб Коррозия Металла играла на разогреве у ее разогрева. Решил наречь команду «Смерть от смертельной инъекции». Именно так, потому что в тру-металле смерти мало не бывает. У кого мало смерти – тот не тру. И вот я представляю, как толпы молоденьких фанаток с визгом кидают на сцену лифчики, умирая от желания вступить в половой акт со мной, их кумиром, как моя группа поднимается на первые места во всех металлических хит-парадах (дополнительно пришлось представить, что в России такие есть). Предвкушаю славу, в общем. И как-то смотрю, длинновато смотрится название группы в чарте по сравнению со всякими сипультурами. Наверняка редакторы глянцевых журналов захотят сократить до аббревиатуры. И получится С.О.С.И.
    В общем, проект был свёрнут. Разочаровался я в этом вашем тру-металле.

    Current Mood: confused
    Friday, February 24th, 2006
    3:55 am
    What the hell are you doing here? You don't belong here.
About LiveJournal.com