/*
 * Copyright (c) 1999 Johnny C. Lam.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  The author makes no representations
 * about the suitability of this software for any purpose.  It is
 * provided "as is" without express or implied warranty.
 */

#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;

double	log_poisson(int, double);

int
main(int argc, const char* argv[])
{
    double lambda = atof(argv[1]);
    int k;
    cin >> k;
    while (!cin.eof()) {
	cout << log_poisson(k, lambda) << endl;
        cin >> k;
    }
    return 0;
}

double
log_poisson(int k, double lambda)
{
    double result = lambda;
    result -= k * log(lambda);
    while (k > 0) {
	result += log(k);
	--k;
    }
    return result;
}
