#include <bits/stdc++.h>
#pragma GCC diagnostic ignored "-Wwrite-strings"
using namespace std;
template <class T, class U>
ostream &operator<<(ostream &out, const pair<T, U> &A) {
  out << A.first << "_" << A.second;
  return out;
}
template <template <typename, typename> class ContainerT, typename ValueT>
ostream &operator<<(ostream &out,
                    const ContainerT<ValueT, std::allocator<ValueT> > &A) {
  for (__typeof((A).begin()) i = (A).begin(); i != (A).end(); ++i)
    out << *i << " ";
  return out;
}
template <template <typename, typename> class ContainerT, typename ValueT,
          typename ValueU>
ostream &operator<<(
    ostream &out, const ContainerT<pair<ValueT, ValueU>,
                                   std::allocator<pair<ValueT, ValueU> > > &A) {
  for (__typeof((A).begin()) i = (A).begin(); i != (A).end(); ++i)
    out << *i << " ";
  return out;
}
template <class T>
void mini(T &a, const T &b) {
  if (b < a) a = b;
}
template <class T>
void maxi(T &a, const T &b) {
  if (b > a) a = b;
}
double a, d;
int n;
pair<double, double> cur;
void go(int dir, double val) {
  double t;
  if (dir == 0) {
    cur.second += val;
    if (cur.second > a) {
      t = cur.second - a;
      cur.second = a;
      go(dir + 1, t);
    }
  } else if (dir == 1) {
    cur.first += val;
    if (cur.first > a) {
      t = cur.first - a;
      cur.first = a;
      go(dir + 1, t);
    }
  } else if (dir == 2) {
    cur.second -= val;
    if (cur.second < 0) {
      t = -cur.second;
      cur.second = 0;
      go(dir + 1, t);
    }
  } else if (dir == 3) {
    cur.first -= val;
    if (cur.first < 0) {
      t = -cur.first;
      cur.first = 0;
      go(0, t);
    }
  }
}
void rotate(int rot) {
  rot %= 4;
  while (rot--) {
    double temp = cur.second;
    if (cur.first == 0) {
      cur.first = cur.second;
      cur.second = a;
    } else if (cur.second == a) {
      cur.second = a - cur.first;
      cur.first = a;
    } else if (cur.first == a) {
      cur.first = cur.second;
      cur.second = 0;
    } else if (cur.second == 0) {
      cur.second = a - cur.first;
      cur.first = 0;
    }
  }
}
long long solve() {
  cin >> a >> d >> n;
  cur = make_pair(0, 0);
  int rot = 0;
  while (d > a) {
    d -= a;
    rot++;
  }
  for (int i = 0; i < (n); ++i) {
    rotate(rot % 4);
    if (cur.first == 0)
      go(0, d);
    else if (cur.second == a)
      go(1, d);
    else if (cur.first == a)
      go(2, d);
    else if (cur.second == 0)
      go(3, d);
    printf("%.5f %.5f\n", cur.second, cur.first);
  }
  return 0;
}
int main() {
  cout << setprecision(5) << fixed;
  solve();
  return 0;
}
