import java.util.*;

interface Sum<T> { void add(T x); }

class FloatSum implements Sum<Float> {
  float val = 0;
  public void add(Float x) 
  { val += x.floatValue(); }
  public String toString() { return String.valueOf(val); }
}

class IntSum implements Sum<Integer> {
  int val = 0;
  public void add(Integer x) 
  { val += x.intValue(); }
  public String toString() { return String.valueOf(val); }
}

class LLNew<T> {
  T data;
  LLNew<T> next;

  LLNew(T d, LLNew<T> n) { data = d; next = n; }

  Sum<T> printAndSum(Sum<T> summer) {
    System.out.println(data);
    summer.add(data);
    if (next != null) next.printAndSum(summer);
    return summer;
  }

  public static void main(String[] args) {
    LLNew<Float> flist = null;
    LLNew<Integer> ilist = null;

    Scanner in = new Scanner(System.in);
    while (in.hasNextDouble()) {
      double d = in.nextDouble();
      flist = new LLNew<Float>((float)d, flist);
      ilist = new LLNew<Integer>((int)d, ilist);
    }

    System.out.println("Floating sum: " + 
      flist.printAndSum(new FloatSum()) + "\n");
    System.out.println("Integer sum: " + 
      ilist.printAndSum(new IntSum()) + "\n");
  }
}