For my first post I’ll take a theorem from algebra whose proof I didn’t like. I’ll show the proof I came up with. I don’t know if it coincides with the proof in the book in the book I’ve been reading (Altman and Kleiman) because their proof looks like symbol salad. I mean, look at this.
To their credit, it is a very compact proof. Maybe I’ll look at it in a few months and think “what a neat proof”, but today is not that day, so I will write down my long, possibly overcomplicated proof, in hopes that 1) it is right and 2) it helps someone else understand what’s going on here.
So what will we be doing here? We will prove the theorem that states that, given a free module $M$ over a nice enough ring, any submodule $N \subseteq M$ is also free, with rank (“dimension”) less than or equal to the rank of $M$. If you don’t understand what these words mean, you are probably not the target audience for this post. Sorry.
Visualizing Modules and The Case for $\Z^2$
I find it useful to have a “prototype module” in mind that I can visualize, in order to get an idea of the phenomena that can happen and to guide me in constructing proofs. We do this all the time in linear algebra: we make drawings of planes and vectors orthogonal to planes and lines and so on. However, general modules are trickier to visualize. Nevertheless, in my experience, $\Z^2$ as a module over $\Z$ is a nice example.
It is an easy module to visualize, but, as we will see, displays a nice range of pathologies.
For our first part, we will categorize the submodules of $\Z^2$. There is more than one way to do this, but we will try to do it as algebraically as possible, in order to make an argument that can be generalized to other modules. By analogy with our study of linear algebra, we predict that there are only three kinds of submodules: the null submodule, one-dimensional submodules, and two-dimensional submodules. Here, we already see the first example of something that doesn’t happen in linear algebra: a submodule can be two-dimensional without being the whole.
So, let’s see how we could construct a basis for some arbitrary submodule of $\Z^2$. In linear algebra, the strategy goes as follows (for finite dimension, at least). Let $N$ be a submodule (subspace) of $M$.
- Is $N$ the null subspace? If so, the empty set is a basis of $N$. Otherwise, let $v_1 \in N \setminus \{0\}$.
- Is $N$ spanned by $v_1$? If so, the set $\{v_1\}$ is a basis of $N$. Otherwise, let $v_2 \in N \setminus \langle v_1 \rangle$.
- Is $N$ spanned by $\{v_1, v_2\}$? If so, this set is a basis of $N$. Otherwise, let $v_3 \in N \setminus \langle v_1, v_2 \rangle$.
And so on…
Problem: this argument does not transfer over to general modules, because it relies on the statement that if $v$ is not in the span of some linearly independent set $A$ then $A \cup \{v\}$ is linearly independent. Unfortunately, this is not true outside of a field. For example, set $A = \{(3,0)\}$ and $v = (2,0)$ in $\Z^2$. Therefore, the previous algorithm fails. Is there a way to fix it, at least for the case of $\Z^2$?
If we’re trying to find a basis for a (non-null) submodule $N$ of $\Z^2$, we could start by picking a random nonzero element $n \in N$. However, we could have the bad luck of picking a “too complex” element. For example, even if $N$ were the $x$ axis, we could have randomly chosen $n = (6,0)$, and then we’re out of luck because even though this vector does not span $N$ it is also linearly dependent from all other elements. In order for this process to have a chance to work out, we need to find a way to “minimize” a vector.
In this particular case, the problem is that $n$ is a multiple of 6. If we set $\hat n = n/6$, we would indeed have a basis for $N$. There are more complicated cases where dividing by the biggest number we can isn’t enough, however. For example, if $N’ = 3\Z \times 0$ dividing by 6 will give us a vector that is not in N’, and so cannot be a basis for it. Nevertheless, even in this case, there exists a biggest number by which you can divide without leaving $N’$, namely $2$, and $n/2$ does form a basis for $N’$.
Therefore, something we might look into is finding ways to “simplify” randomly picked vectors, so that we have a chance at creating a base with them. In our example, the problem was that the vector was a multiple of some number, so we might expect that it would be a good idea to divide by the greatest common multiple of all the coordinates. This is the first indication we have that it might be good to restrict our attention to principal ideal domains: a PID is, morally speaking, a ring where we can take greatest common divisors.
So, returning to our general context, let $M$ be a free module. In other words, we can assume without loss of generality that it is of the form $R^{\oplus \Lambda}$ for some index set $\Lambda$. Given $m \in M$, define $\hat m$ as $m/g$, where $g$ is the GCD of the coordinates of $m$. This makes sense because, in the example of $\Z^2$, we’re making $m$ as small as possible. More rigorously, consider the ideal generated by the coordinates of $m$. Since $R$ is a PID, this ideal is generated by some $g \in R$, and every coordinate in $m$ is of the form $m_\lambda = g \hat m_\lambda$. Define $\hat m$ as the vector whose coordinates are the $\hat m_\lambda$. Note that the $\hat m_\lambda$ are coprime, which corresponds to them being minimal in some sense.
Note that this isn’t exactly well-defined, because there are multiple values of $g$ that qualify as “the GCD of the $m_\lambda$”. However, it is well-defined up to product by units. Furthermore, it apparently relies on the particular representation of $M$ as a sum of $R$s. However, this is (somewhat surprisingly) not the case, because it is (up to product by unit) the only element of $M$ with this property: $m$ is a multiple of $\hat m$, and if $m$ is a multiple of some $m’$ then $m’$ is a multiple of $\hat m$.
These “minimal vectors” (i.e. vectors whose coordinates are all coprime) can be used to generate “lines”. In good old linear algebra, given any vector $v$, we could visualize the span of $v$ as an unbroken line, but this intuition fails for modules. Taking the hat operation makes this intuition work again: the span of $\hat v$ can be seen as an unbroken line in the direction of $v$, while the span of $v$ might be “incomplete” and riddled with holes. However, note that this might be undesired: our submodule $N$ itself might have holes in the direction of $v$, in that $\hat v$ might not be in $N$, so we still have to find a minimal vector in $N$ itself.
Let’s go back to our algorithm to find a basis of a linear subspace of a vector space:
- Is $N$ the null subspace? If so, the empty set is a basis of $N$. Otherwise, let $v_1 \in N \setminus \{0\}$.
- Is $N$ spanned by $v_1$? If so, the set $\{v_1\}$ is a basis of $N$. Otherwise, let $v_2 \in N \setminus \langle v_1 \rangle$.
- Is $N$ spanned by $\{v_1, v_2\}$? If so, this set is a basis of $N$. Otherwise, let $v_3 \in N \setminus \langle v_1, v_2 \rangle$.
And so on…
Let us try to modify this algorithm in order to make it work for general modules. First, as we’ve already seen, we probably don’t want the vectors $v_1, v_2, \dots$ themselves, but rather some divisor of them. As such, given $v \in N$, $v \neq 0$, define $\tilde v$ as the smallest multiple of $\hat v$ that lies in $N$. Intuitively, this corresponds to “following along the direction of $v$ and stopping as soon as we find an element of $N$”. Of course, we do need to show that such a smallest multiple of $\hat v$ exists, but there we are once again saved by the fact that $R$ is a PID. Indeed, consider the set $B$ of scalars such that $b \hat v \in N$. It is obvious that $B$ is an ideal, which means it has some generator $b_0$. Then, simply define $\tilde v$ as $b_0 \hat v$. This might be starting to get confusing, so here is a diagram exemplifying what all these symbols mean.
Back to our algorithm, let us try the following (simple) modification:
- Is $N$ the null subspace? If so, return the empty set. Otherwise, let $v_1 \in N \setminus \{0\}$.
- Is $N$ spanned by $\tilde v_1$? If so, return the set $\{\tilde v_1\}$. Otherwise, let $\tilde v_2 \in N \setminus \langle \tilde v_1 \rangle$.
- Is $N$ spanned by $\{\tilde v_1, \tilde v_2\}$? If so, return this set. Otherwise, let $\tilde v_3 \in N \setminus \langle \tilde v_1, \tilde v_2 \rangle$.
And so on…
All we’ve changed was, upon choosing a vector, work with its tilde. Unfortunately, this only fixes step one. The two first steps are correct. In other words, if we terminate in step 1. or 2. we are guaranteed to have a basis of $N$. However, the process can fail as soon as step 3, as the following example shows.
Let $N$ be $2\Z \times 2\Z$. Suppose that, in applying the above algorithm, we begin by choosing $v_1 = (2,0)$. Then, $\tilde v_1 = v_1$. This does not span the whole set, so suppose that in choosing $v_2$ we pick $v_2 = (6,4)$. This is also its own tilde, but $\{v_1, v_2\}$ does not span $N$; for example, with them you can’t make any vector with $y = 2$.
A possible objection to this example is that $v_2$ isn’t really minimal. If we look at it in isolation, sure, it is, but we do have access to $v_1$. Adding and subtracting multiples of $v_1$ to $v_2$ don’t change the span of $\{v_1, v_2\}$, so, for example, having $v_1$ and $v_2$ is just as good as having $v_1$ and $w = v_2 – 3 v_1 = (0,4)$, and note now that $w \neq \tilde w$! Indeed, $v_1$ and $w$ do span $N$, which shows that the problem with our $v_2$ was that, even though it was in fact minimal in its own line, we could disturb it using $v_1$ in order to make it non-minimal. This suggests a revision to our algorithm, and a strengthening of the concept of “tilde”.
Consider a set $A \subseteq N$. We will say $v$ is tilde-minimal in $N$ if $v = \tilde v$ (modulo product by unit). We will say $v$ is minimal with respect to $A$ if, for every $a \in A$, $v+a$ is tilde-minimal. What we have been doing is ensure that at every step the vectors we add to the list were tilde-minimal. Now that we have concluded that this is not enough, let us try to ensure that they are minimal with respect to the rest of the vectors we already have. We already have a process to construct the tilde-minimization of a vector. Can we find a way to construct an $A$-minimization of a vector, in some sense?
The obvious procedure goes as follows. Suppose $A$ and $v$ are fixed. If $v$ is $A$-minimal, we are done. Otherwise, there exists $a \in A$ such that $v + a$ is not tilde-minimal. Consider $w = v+a$, and restart the algorithm with $\tilde w$.
It is obvious by construction that, if this algorithm terminates, the result is $A$-minimal, and note that the original vector is in the span of $A \cup \{w\}$, where $w$ is the output. However, it is not clear that the process can be guaranteed to terminate. Even in $\Z^2$, it might take more than one step for it to terminate. For example, let $N$ still be $2\Z \times 2\Z$, $A = \{(2,0)\}$ and start the algorithm with $v = (2,8)$. Then, the first step of the algorithm might go as: $w = v+(2,0) = (4,8)$, $\tilde w = (2,4)$, which is still not $A$-minimal. One more step, say with $\tilde w + (2,0) = (4,4) \rightarrow (2,2)$ does result in a minimal vector, but it is obvious that this example can be adapted to make examples that take arbitrarily long to terminate.
It is tempting to use classical infinite-descent arguments to show that the algorithm halts in a finite number of steps, at least in the example of $\Z^2$, but care must be taken. For example, there is no guarantee that the norm of a vector is always decreasing. For example, still using $N = 2\Z \times 2\Z$ and $A = \{(2,0)\}$, suppose we begin the algorithm with $v = (2,4)$, and follow with $w = v + 99 \times (2,0)$. Then, as should be obvious even without doing the computations, the norm of $\tilde w$ is far greater than the norm of $v$!
However, despite this difficulty, in our particular example there is one regularity to be found: if $A$ is of the form $\{(x,0)\}$, then we know for sure that the $y$ component of the vector on which we’re doing the algorithm is constantly decreasing (in absolute value, at least), which allow us to show that the algorithm terminates. This raises the question: would it be possible to, upon choosing an element $v_1 \in N$, change basis so that $\hat v_1$ is equal to $(1,0)$? The answer is yes, though I don’t know how to generalize it to dimension higher than two.
The crucial lemma goes as follows: let $(a_1,a_2) \in \Z^2$ such that $a_1$ and $a_2$ are coprime. Then, it is possible to find a vector $(c_1, c_2)$ such that these two form a basis.
To understand why, let us first recall that $a_1, a_2$ coprime is equivalent to the existence of $b_1, b_2$ with $a_1 b_1 + a_2 b_2 = 1$. Then, we might attempt to build $(c_1, c_2)$ “by hand”. Note that we want for there to be $A, B, C, D$ such that the following things happen:
\begin{gather*}
A (a_1, a_2) + B (c_1, c_2) = (1,0)\\
C (a_1, a_2) + D (c_1, c_2) = (0,1).
\end{gather*}
Note that two of the (actually four) equations we have here look suspiciously like something we already know. For example, we want to ensure $A a_1 + B c_1 = 1$. It would be very convenient if $c_1 = b_2$ or $c_1 = a_2$, so that this equation has a known answer. It takes a bit of trial and error, but after a few iterations of applying this kind of heuristic thinking you easily reach the conclusion that $(c_1, c_2) = (b_2, -b_1)$ does in fact work, and we do indeed have a basis where one of the vectors is $(a_1, a_2)$. Don’t forget to show that the two vectors are linearly independent, and try to find a way to do it that does not rely on the fact that our ring is $\Z$.
With this in mind, we are now ready to categorize the submodules of $\Z^2$. Let $N$ be such a submodule. If $N$ is null, it is the free module generated by the empty set. Otherwise, pick $v_1 \in N$. If $\tilde v_1$ spans $N$, then it forms a basis of $N$. Otherwise, we need to apply the things we’ve done so far.
Consider a change of basis where $\hat v_1 = (1,0)$, so that $\tilde v_1$ is of the form $(x_1,0)$. Let $v_2 \in N \setminus \langle \tilde v_1 \rangle$. Note that $v_2$ is of the form $(x_2, y_2)$ with $y_2 \neq 0$, for if it were in the span of $\hat v_1$ it would also be in the span of $\tilde v_1$. (Should I prove this or is it obvious?) Now, we can apply the algorithm of $A$-minimization, described above, with $A = \{\tilde v_1\}$ and $v = v_2$. We can show that the algorithm will terminate because at each step $y_2$ gets smaller in absolute value. Note that this is the only step we’ve done so far that relies on our ring being $\Z$: we will soon describe a way to get around this.
So, now we have $\tilde v_1 \in N$ and some vector $w$ which is $\tilde v_1$-minimal. Can we show that these two vectors form a basis for $N$? Linear independence is obvious, as $w$ has non-null $y$ coordinate, so now we need only show that they generate $N$.
By inspecting the above image, some structure starts to appear. Since we set $\tilde v_1$ to be horizontal, it seems $N$ organizes itself as “horizontal layers”, and it makes sense (and would be necessary if this algorithm is intended to work) that $w$ would lie on the first possible layer. In other words, we claim that if $w = (x_2, y_2)$ then $y_2$ is minimal in $N$, i.e. given any $z = (x_3, y_3) \in N$ we intend to show that $y_3$ is a multiple of $y_2$. Once that is done, we know that to write $z = A \tilde v_1 + B w$ we would necessarily have $B = y_3/y_2$, and $A$ would then be completely determined by the $x$ coordinate, which gives us a path to complete the proof.
Suppose $y_3$ was not a multiple of $y_2$, and we will try to reach a contradiction. We can, without loss of generality, suppose that $y_2$ is a multiple of $y_3$, because if $g$ is the GCD of $y_2$ and $y_3$ we can write $g = C y_2 + D y_3$, and now we can work with $C w + D z$ instead of $z$. That said, we will use the fact that we have a $z$ with “smaller $y$ coordinate than $w$” to show that $w$ can’t be $\tilde v_1$-minimal after all. We will show $w$ could in fact be reduced to $z$.
Consider $\frac{y_2}{y_3} z$. It has the same $y$ coordinate as $w$, so that $w – \frac{y_2}{y_3} z$ is in the $x$ axis. It is therefore a multiple of $\tilde v_1$, let us say $K \tilde v_1$. Then, we get $w – \frac{y_2}{y_3} z = K \tilde v_1$, and we conclude that $w$ was not $\tilde v_1$-reduced after all, because $w – K \tilde v_1$ is not tilde-reduced. Thus, we reach a contradiction, and it turns out the $y$ coordinate of $w$ was minimal after all.
The proof is easy from now on, because we can easily show that $\tilde v_1$ and $w$ span $N$. Indeed, given $z = (x_3, y_3)$, we want to write it as $A \tilde v_1 + \frac{y_3}{y_2} w = z$, which is certainly possible because $z – \frac{y_3}{y_2}w$ is in the $x$ axis and also in $N$ and thus of the form $A \tilde v_1$. The proof is complete: we have shown that any submodule $N$ of $\Z^2$ is generated by zero, one or two vectors.
We are now only a tiny hop away from showing the general statement for rank two modules over a PID, because only one of the steps we did relied on our use of $\Z$: namely, when we showed that the algorithm for $A$-minimization halts by the method of infinite descent. Yet again, the fact that we are in a PID shows its usefulness, because principal ideal domains do have their own method of infinite descent in the form of the Ascending Chain Condition. Simply put, any infinite sequence $r_1, r_2, r_3, \dots$ where each $r_n$ is a divisor of the previous will eventually stabilize up to product by unit. In our particular case, we can consider the sequence of the $y_n$: since at each step the $y$ was being divided by some non-unit element (and it didn’t change when adding a multiple of $\tilde v_1$) the sequence of the $y_n$ gives us a sequence where each element is a (proper) divisor of the previous, and by the ACC it must eventually halt. Thus, we reach the conclusion:
Theorem: If $M$ is a rank two free module over a PID, any submodule $N$ of $M$ is also a free module, with rank 0, 1 or 2.
Note that the argument by ACC is effectively an argument by infinite descent, with the minor change that it uses the “divisibility partial order” instead of some order based on absolute value.
$A$-complexity
It took me a while to figure this part out, but as it turns out, the $A$-minimization algorithm above can be shown to work in finite dimension, though I haven’t yet figured out the infinite-dimensional case.
Like we did in the 2D case, the idea is to use the ACC as a monovariant. Assign each vector an element of $R$ and show that at each iteration the scalar assigned to the output is a (proper) divisor of the scalar assigned to the input. The ACC will then guarantee that the algorithm cannot go on forever.
Recall the algorithm of $A$-minimization: given $v \in M$ and $A \subseteq M$, if $v$ is $A$-minimal, we are done. Otherwise, there exists $a \in A$ such that $v + a$ is not tilde-minimal. Consider $w = v+a$, and restart the algorithm with $\tilde w$.
What number could we possibly assign to a vector to get this to work? It would have to be a measure of how far away our vector is from the set $A$, so it makes sense to demand that the scalar assigned to a vector $v \in M$ would be the same as the one assigned to $v+a$ for $a \in A$. Therefore, let’s look at a picture where we have drawn the sets of the form $v+A = \{\,v + a \mid a \in A\,\}$.
As you can see in the figure, the sets $v+A$ organize themselves as lines parallel to $A$ (as is to be expected). It would be nice to find a way to find a way to number them as $1, 2, 3, \dots$ and so on.
Now, I don’t have a very satisfactory way to explain how I got to this idea, but I hope it makes sense. We are, in a sense, trying to measure how “complex” the vectors in a line are. So far, we’ve already found a measure of how complex a vector is: the GCD of its coordinates. So what happens if we look for how complex the vectors in each of these lines are? Let’s plot the same picture, but with GCDs of coordinates annotated.
Do you see it? There are a few overlapping patterns, in fact.
- On each line, we have highlighted a point, whose “complexity value” is exactly the number we want to assign to that line,
- On each line, the highlighted point appears to have the highest complexity value in the line, and
- These points seem to be conspicuously aligned.
Let’s focus on the first two points. This seems to be in line with the idea we want: we wish to measure how complex a line is, so we find the most complex point in the line. In other words, we define
\[k_A(x,y) = \max_{(a_1, a_2) \in A} \gcd(x+a_1, y+a_2).\]
Note: this function is being applied to points, not to lines. The idea is that, since we’ll be measuring complexities of vectors anyway (to show our $A$-minimization algorithm halts), we define a function on a vector $(x,y)$, which returns the complexity of the line $(x,y)+A$.
There are two problems with this definition. First of all, how do we know such a maximum exists? And second, how do we generalize this to non-integer contexts? We’ll answer the first question shortly. As for how this generalizes to non-integer contexts, we simply apply an idea we’ve already used to generalize from integers to general PIDs: simply use a different order. Instead of thinking of the integers (or the elements of a ring) ordered by magnitude, we order them (modulo units) by divisibility. In other words, the maximum is replaced by the least common multiple. Now, let us investigate what happens in the 2D case. For simplicity, let us use an example like in the picture, where $A$ is generated by a vector $\hat a = (a_1, a_2)$, with $a_1$ and $a_2$ coprime. In this case, the expression we are maximizing when calculating $k_A(x,y)$ is given by
\[\gcd(x+ k a_1, y + k a_2), k \in \Z.\]
Now let’s apply some number theory tricks. First of all, let $b_1, b_2 \in \Z$ be such that $b_1 a_1 + b_2 a_2 = 1$. Second, we know that the GCD stays the same if we add multiples of one term to another. That is, $\gcd(A, B) = \gcd(A, B+n A)$ for any $n$. Furthermore, the GCD of two numbers is the same as the GCD of those two numbers, and zero, that is, $\gcd(A,B) = \gcd(A,B,0)$. Therefore, we can shuffle some things around to get rid of the $k$ in as many terms as possible:
\begin{align*}
\gcd(x+ k a_1, y + k a_2) &= \gcd(x+k a_1, y+k a_2, 0)\\
&= \gcd(x+k a_1, y+k a_2, b_1 (x+k a_1) + b_2(y+k a_2))\\
&= \gcd(x+k a_1, y+k a_2, b_1 x + b_2y + k)\\
&= \gcd(x+k a_1 – a_1(b_1 x + b_2y + k), y+k a_2 – a_2(b_1 x + b_2y + k), b_1 x + b_2y + k)\\
&= \gcd(x – a_1(b_1 x + b_2 y), y – a_2 (b_1 x + b_2 y), b_1 x + b_2 y + k).
\end{align*}
(In simple words, what happened here: we added an argument of the form $\text{const.} + k$ to the GCD and then removed appropriate multiples of it to the other arguments so that only the last argument depends on $k$.)
Now, if we are taking the maximum as $k$ varies over the integers, we might as well pick $k = -(b_2 y + b_1 x)$, to attain the maximum $\gcd(x – a_1(b_1 x + b_2 y), y – a_2 (b_1 x + b_2 y))$. (Check that it is actually the maximum, at least in the divisibility order!) Note that this explains the phenomenon wherein we found those red points in a line: it is actually the line given by points of the form
\[(x,y) + k (a_1, a_2) = (x,y) – (b_2 y + b_1 x)(a_1, a_2) = \dots = (a_2 x – a_1 y) (b_2, -b_1),\]
which form a line in the direction of $(b_2, -b_1)$. In our case, $(a_1, a_2) = (3,-2)$, and it is easy to check that (a possible pair) $(b_1, b_2) = (1,1)$, which results in a line with the direction of $(1,-1)$, which does match with the red points.
Motivated by how well the 2D case worked, we will now generalize the notion of $A$-complexity to the finite dimensional case.
The Finite Rank Case
Let $M$ be a finite rank module, say $R^N$. Consider a subset $A$ generated by $\hat a^1, \dots \hat a^k$, where each of these vectors has coprime coordinates $(\hat a^j_1, \dots, \hat a^j_N)$. In what follows, we will always assume $A$ is of this form. We will define the $A$-complexity of a vector $v \in M$ as
\[k_A(v) = \max_{a \in A} \gcd(v_i + a_i),\]
where the maximum is taken in the divisibility order (and is only defined modulo unit) and inside the GCD the index $i$ is implicitly varying as $i = 1, \dots, N$. What we will now show is that this is a well-defined expression, and, when applying the $A$-minimization algorithm, is guaranteed to decrease with every iteration, which shows that the algorithm halts.
First, rewrite the quantification over $a \in A$ as one over multiples of the $\hat a^j$:
\[k_A(v) = \max_{r_1, \dots, r_k \in R} \gcd(v_i + r_1 \hat a^1_i + \dots + r_k \hat a^k_i).\]
Now we can apply the previous tricks to get rid of variables. For example, suppose $b_1, \dots, b_N$ are such that $\sum b_i \hat a^k_i = 1$. Then, if $u_i = v_i + r_1 \hat a^1_i + \dots + r_{k-1}\hat a^{k-1}_i$,
\begin{align*}
\gcd(v_i + r_1 \hat a^1_i + \dots + r_k \hat a^k_i) &= \gcd(u_i + r_k \hat a^k_i)\\
&= \gcd(u_i + r_k \hat a^k_i, \left(\sum_j b_j u_j\right) + r_k)\\
&= \gcd(u_i – \hat a^k_i \left(\sum_j b_j u_j\right), \left(\sum_j b_j u_j\right) + r_k).
\end{align*}
This expression depends only on $r_k$ in the last coordinate, and so can easily be maximized (in this variable) for $r_k = -\sum_j b_j u_j$, leaving us with an expression depending only on $r_1, \dots, r_{k-1}$. The process can be iterated, which would leave us with a (terrible) explicit expression for computing $k_A(v)$, which shows it is well-defined.
Now we need only show that this is a monovariant for the $A$-minimization algorithm. Recall that the algorithm goes as follows: given $v \in M$ and $A \subseteq M$, if $v$ is $A$-minimal, we are done. Otherwise, there exists $a \in A$ such that $v + a$ is not tilde-minimal. Consider $w = v+a$, and restart the algorithm with $\tilde w$.
Therefore, it will suffice to show that if $w \not \in A$ is not tilde-minimal then $k_A(\tilde w) < k_A(w)$ in the divisibility order. More specifically, given a vector $v$ and a scalar $r$ we will show that $r k_A(v) \leq k_A(r v)$, which, together with the fact that $k_A(v) = 0$ iff $v \in A$ (which we will also shows), proves that $k_A(w)$ is a proper multiple of $k_A(\tilde w)$. All of this is happening modulo product by unit. I’m going to stop saying that things are modulo unit.
There is an “easy” way to see that $k_A(r v) = r k_A(v)$ (this is stronger than we need). If you had the patience to write down the explicit expression for $k_A(v)$ you would notice it is a GCD of things that depend linearly on the $v_i$, which clearly shows that multiplying $v$ by a scalar would multiply its $A$-complexity by that scalar. However, there is a direct and easy proof of the inequality by definition. Indeed, $r k_A(v) = \max_a r \gcd(v_i + a_i) = \max_a \gcd(r v_i + r a_i)$. This is the same as taking the maximum of $\gcd(r v_i + a_i)$, where now the $a$ are varying over $r A$ instead of $A$. Therefore, $r k_A(v) \leq k_A(r v)$.
Now, to complete the proof that for $w \not \in A$, $w \neq \tilde w$ we have $k_A(\tilde w) < k_A(w)$, we need only show that $k_A(\tilde w) \neq 0$. To do so, we will show that $k_A(v) = 0$ iff $v \in A$; this is enough because if $\tilde w$ were in $A$ so would $w$.
Obviously if $v \in A$ then $k_A(v) = 0$, so let us do the other implication. Suppose, that $k_A(v) = 0$. Then there exists $a$ such that $\gcd(v_i – a_i) = 0$. But since any number divides zero, if there was a single nonzero term in the GCD then the GCD would not be zero. Therefore, we conclude $v = a \in A$.
In conclusion:
- We have defined an object we call “the $A$-complexity of a vector”, for sets $A$ generated by $\hat a^1, \dots, \hat a^k$,
- We have shown that this is a monovariant for the $A$-minimization algorithm, which shows that
- Given any vector $v \not \in A$ there exists $w$ such that $w$ is $A$-minimal, that is, $w+a$ is tilde-minimal for all $a \in A$. Furthermore, $w$ is obtained from $v$ by repeatedly adding elements of $A$ and taking tilde, which shows that $v \in \langle A, w \rangle$.
We are now ready to rewrite our algorithm for finding a basis of a submodule. Let $M$ be a free module of finite rank. Let $N$ be a submodule of $M$. (Not to be confused with the rank of $M$ above!) Consider the following algorithm to (we hope) find a basis of $N$:
- Is $N$ the null submodule? If so, return the empty set. Otherwise, let $v_1 \in N \setminus \{0\}$.
- Is $N$ spanned by $\tilde v_1$? If so, return the set $\{\tilde v_1\}$. Otherwise, let $\tilde v_2 \in N \setminus \langle \tilde v_1 \rangle$ be $\hat v_1$-minimal.
- Is $N$ spanned by $\{\tilde v_1, \tilde v_2\}$? If so, return this set. Otherwise, let $\tilde v_3 \in N \setminus \langle \tilde v_1, \tilde v_2 \rangle$ be $\langle \hat v_1, \hat v_2 \rangle$-minimal.
And so on…
The output of this algorithm (if it halts in finite time) is a maximal set $\tilde v_1, \tilde v_2, \dots, \tilde v_k$, where each vector is minimal with regard to the previous vectors. Clearly, this set spans $N$, so what is left to show is that 1. it is linearly independent and 2. it halts at most in $K = \mathrm{rk}\, M$ steps.
Let us begin with linear independence. Suppose some non-null linear combination $\sum r_i \tilde v_i$ equals zero. We wish to make use of minimality of each vector wrt to the previous, so let $k_0$ be the biggest coefficient such that $r_{k_0} \neq 0$. We conclude
\[r_{k_0} \tilde v_{k_0} = \sum_{i=1}^{k_0 – 1} -r_i \tilde v_i.\]
Now, that looks kind of weird. For this to happen, the span of $\tilde v_1, \dots, \tilde v_{k_0 – 1}$ would need to have “holes from the point of view of $N$”: vectors which are in the span but have divisors which are not. Fortunately, we are in a position to show such holes can’t happen, that is:
Proposition: Let $\tilde v_1, \tilde v_2, \dots \tilde v_k \in N$ be such that each of these vectors is minimal (in $N$) wrt the vectors before it. (In other words, a possible output of our (hopefully) base generation procedure.) Then, the span of the $\tilde v_i$ is “free of holes in $N$”, in the sense that, for all $r \in R$, $r \neq 0$ and $v \in N$ such that $r v \in \langle \tilde v_1, \dots, \tilde v_k \rangle$, we have $v \in \langle \tilde v_1, \dots, \tilde v_k \rangle$.
Proof: Since our hypothesis is inductive, it makes sense to consider a proof by induction in $k$. The base case is trivial: for $k = 0$ the span of the vectors is the null space and there is nothing to show.
Now, let us do the induction step. Suppose the statement is true for some $k$, and let us prove it for $k+1$. Let $r \in R$, $r \neq 0$, and $v \in N$ such that
\[r v = \left(\sum_{i = 1}^k r_i \tilde v_i\right) + r_{k+1} \tilde v_{k+1}.\]
The idea is to rearrange this as (the sum on the right-hand side) equals (some multiple of something in $N$). In particular, we want to write $r v – r_{k+1} \tilde v_{k+1}$ as a multiple of something in $N$, To do so, let $g$ be the GCD of $r$ and $r_{k+1}$, and so we get
\[g (\tfrac rg v – \tfrac{r_{k+1}}g \tilde v_{k+1}) = \sum_{i = 1}^k r_i \tilde v_i,\]
and so we conclude, by the induction hypothesis, that $\tfrac rg v – \tfrac{r_{k+1}}g \tilde v_{k+1}$ can be written as a linear combination of $\tilde v_1, \dots, \tilde v_k$. Now, we can use the fact that $\tfrac rg$ and $\tfrac{r_{k+1}}g$ are coprime to write, say, $A \tfrac rg + B \tfrac{r_{k+1}}g = 1$, and so we can write
\[\text{(Some combination of $\tilde v_1, \dots, \tilde v_k$)} = B\tfrac rg v – B\tfrac{r_{k+1}}g \tilde v_{k+1} = – \tilde v_{k+1} + \tfrac rg (B v + A \tilde v_{k+1}),\]
which, unless $r = g$, contradicts the minimality of $\tilde v_{k+1}$ wrt $\tilde v_1, \dots, \tilde v_k$, for we can write $\tilde v_{k+1}$ plus a combination of the other vectors as $r/g$ times a vector in $N$.
Now, we have already shown that $\tfrac rg v – \tfrac{r_{k+1}}g \tilde v_{k+1}$ can be written as a linear combination of $\tilde v_1, \dots, \tilde v_k$, and so, since $r =g$, $v$ can be written as a combination of $\tilde v_1, \dots, \tilde v_{k+1}$, which completes the induction step. QED.
This completes the proof that the vectors obtained by the algorithm “have no holes”, and consequently that they are all linearly independent. Now, the only thing left to do is to show that there are at most $K = \mathrm{rk}\, M$ distinct vectors. The classical, linear algebra way of doing this is to use the fact that on $K$-dimensional space any set of more than $K$ vectors cannot be linearly independent. This is also true on modules over general rings, but it is a mouthful to prove. I might do a post on it sometime if I feel like it. In any case, I’ll prove the case for domains, which is a very simple adaptation of linear algebra.
The idea is as follows: given a set of vectors $v_1, \dots, v_k$, we will do some kind of “Gaussian elimination”, which results in an upper diagonal $k \times K$ matrix whose rows are nontrivial linear combinations of $v_1, \dots, v_k$. If all vectors are linearly independent, then no row may be null, but this can only happen if the matrix is not taller than it is wide: in other words, $k \leq K$.
The Gaussian elimination algorithm (on a vector space, i.e. over a field!) goes as follows. Consider the matrix
\[
\begin{bmatrix}
v_{11} & v_{12} & \cdots & v_{1K}\\
v_{21} & v_{22} & \cdots & v_{2K} \\
\vdots & \vdots & \ddots & \vdots\\
v_{k1} & v_{k2} & \cdots & v_{kK}
\end{bmatrix}.
\]
Is the first column null? If so, skip to the next step. Otherwise, assume without loss of generality (by swapping lines if necessary) that $v_{11}$ is non-null. Then, since we’re in a field, $v_{11}$ is invertible, and we may add multiples of the first line to the rest in order to get a matrix of the form
\[
\begin{bmatrix}
v_{11} & v_{12} & \cdots & v_{1K}\\
0 & v_{22} – \frac{v_{21}}{v_{11}} v_{12} & \cdots & v_{2K} \frac{v_{21}}{v_{11}} v_{1K} \\
\vdots & \vdots & \ddots & \vdots\\
0 & v_{k2} – \frac{v_{k1}}{v_{11}} v_{k2} & \cdots & v_{kK} – \frac{v_{k1}}{v_{11}} v_{1K}
\end{bmatrix}.
\]
Now, apply the algorithm recursively on the submatrix composed of the indices $\{2,\dots,k\} \times \{2, \dots, K\}$ (or, if we skipped a step because the first column was null, $\{1,\dots,k\} \times \{2, \dots, K\}$). Continue until you reach an empty matrix. The resulting matrix is definitely upper-diagonal, and each line is of the form
\[\text{(The vector that was in that line)} + \text{(A linear combination of previous vectors)},\]
so if any of the lines is null then the lines of the initial matrix must necessarily be linearly dependent. And of course, if $k > K$ then this is necessarily the case, which shows (in vector spaces) that a set of more than $K$ vectors in $K$-dimensional space must be linearly dependent.
Now here comes the magic trick: even though this argument is not applicable to general modules, because there is no guarantee that a non-null scalar is invertible, it can easily be adapted to work for domains (and, in particular, PIDs): instead of subtracting, say, $\frac{v_{21}}{v_{11}} \times \text{the first line}$ to the second line, multiply instead the second line by $v_{11}$ and subtract $v_{21}$ times the first line to it. The end result is that each line is of the form
\[\text{A non-null scalar}\times\text{(The vector that was in that line)} + \text{(A linear combination of previous vectors)},]\]
and the argument for vector spaces proceeds without a hitch. Note that we use the assumption that $R$ is a domain when we claim that “$\text{A non-null scalar}$” is indeed non-null, because all we know about it is that it is a product of non-null scalars.
This concludes the proof of the theorem for finite rank spaces:
Theorem: if $M$ is a finite rank free module over a PID $R$ and $N$ is a submodule of $M$, then $N$ is also a free module over $R$, with rank at most that of $M$.
A Negative Result: Why This Doesn’t Work in Infinite Dimension
This section is the kind of thing I feel kind of silly writing, and yet I wish it was the kind of thing I wish more people did. Mathematical proofs aren’t the result of a single avenue of research, but rather the result of several failed or partially failed attempts. However, when we are presented with the one path that did work, it leaves open the question of “why did they choose this very non-obvious path and not one of the more obvious things they could have done?”. Consequently, this section is me explaining how I figured out that the path we have taken so far can never be used to do the proof in infinite dimensions. I am not happy about this.
So, let’s lay down what we’ve got so far. We have an algorithm which will, given a submodule $N$ of $M$, create successively bigger lists of elements in $N$ such that each element is in some sense minimal with relation to the previous vectors. We have shown that these vectors are all linearly independent and their span “has no holes in $N$”, that the algorithm terminates exactly when the list of vectors spans $N$, and we guaranteed that it terminates in a finite number of steps if $M$ has finite rank. Mixing these ingredients, the proof is done for finite dimension.
To generalize the proof to infinite dimension, we would probably want to use some kind of transfinite process, or, more commonly, the doesn’t-know-ordinals-person version of that, Zorn’s lemma. To do so, we would need to find some poset corresponding to “lists of vectors that could be obtained in the process of our algorithm”, use Zorn’s lemma to prove that there is a maximal such list of vectors (which corresponds to “running the algorithm very-infinitely many times until we can’t run it anymore”) and showing that a maximal list of these vectors is in fact a basis for $N$.
The obvious thing to do would be to consider the poset $P$ of lists (or bigger – there are set theoretical details you’d need to work out first, but they’re not relevant so we’re glossing over them here) of vectors of $N$ such that each vector $v$ is $A$-reduced where $A$ is the set of vectors before $v$ in the list, ordered by $L_1 \leq L_2$ iff $L_1$ is a prefix of $L_2$. Indeed, it would not be hard to adapt the arguments for the finite rank case to show that such a list $(v_1, v_2, \dots) \in P$ would be linearly independent and “have no holes”, and it would not be a big stretch to show that any chain has an upper bound (given a bunch of lists in a chain, just take “the union of the lists”) which allows us to apply Zorn to get a maximal list. In other words, we’ve just applied the algorithm we developed as many times as we could.
This is where we run into a problem, however. How do we show that such a maximal list $L = (v_1, v_2, \dots)$ forms a basis for $N$? In the finite dimensional case the argument would go as follows: if $w$ weren’t in the span of $L$, we could apply the minimization algorithm to $w$ over $A = \langle L \rangle$ in order to get a vector $w’ \in N$ which is minimal wrt to $L$. This would contradict the hypothesis that $L$ is maximal, because we could get a bigger list by appending $w’$ to the end of $L$. Unfortunately – and this is the crucial bit – the minimization algorithm only works for finite dimension.
First of all, a weaker statement: our proof that the $A$-minimization algorithm works required that we were in finite dimension. This is because we proved that it terminates based on the quantity which we called $k_A(w)$, which we showed was well-defined (and even proposed a way to find an explicit expression for it) and showed was a monovariant in the algorithm. However, if you go back and look, you’ll notice that we assumed in the proof (but curiously, not the definition) that $A$ was finitely generated. You might think that this could be recoverable and that $k_A$ would be a well-defined object, but you would unfortunately be wrong.
Recall the (basis-of-$A$ independent) definition of $k_A(v)$:
\[k_A(v) = \max_{a \in A} \gcd(v_i + a_i).\]
In order to try and break this definition, I sought out an example over, say, $\Z$, where this GCD would take arbitrarily large values. It would need to be infinite-dimensional, and the simplest possible example is $\Z^\infty$, which is a direct sum of countably many copies of $\Z$. Now, I would need to find a vector $v$ and a sequence of vectors $a^1, a^2, \dots$ such that each vector $a^n$ satisfying that, say, $v + a^n$ is a multiple of $n$. Furthermore, we will want to ensure that $v$ is not in the span of the $a^n$, because the $A$-minimization algorithm was meant to be applied to vectors $v \not \in A$.
With these constraints, after a bit of trial and error, I came up with (a slightly more complicated version of) the following example:
\begin{gather*}
v = (1,0,0,\dots),\\
a^n = (-1, \underbrace{0, \dots, 0}_{\text{$n-1$-many zeroes}}, n, 0, \dots).
\end{gather*}
With $A = \langle a^1, a^2, \dots \rangle$, the quantity $k_A(v)$ is not well-defined, because in the “maximum” we have arbitrarily large values (because $\gcd(v_i + a^n_i) = n$) but we never attain an actual maximum. Any reasonable extension of the concept (say we use a supremum instead of a maximum, which in PID terms corresponds to taking the least common multiple) we would have $k_A(v) = 0$ in this example, which completely breaks any attempt at adapting the proof that the $A$-minimization algorithm works.
It gets worse. Not only does our proof fail, the entire algorithm fails, and the whole attempted proof fails: this set $\{a^n \mid n \in \N^+\}$ has the troubling property that, even though it fails to generate the whole set (you should check this) and is linearly independent, it cannot be extended to a basis of $\Z^\infty$. By itself, this is neither too surprising nor too worrisome: we saw examples like this right at the start, where the pair $(2,0),(0,3)$ is linearly independent in $\Z^2$ but cannot be made into a basis. To solve this problem, we spent a bunch of time coming up with criteria stronger than “linearly independent” which, if satisfied, ensure our linearly independent sets can be extended to bases. This is what we did with the definition of minimal wrt $A$, in demanding that lists of vectors $(v_1, \dots, v_n)$ satisfy the property that each $v_k$ is minimal wrt $\langle \hat v_1, \dots, \hat v_k\rangle$. The example of $(a^1, a^2, \dots)$ does not satisfy this property, but once you understand why, it is easy to adapt it to one that does:
\[b^n = (-1, \underbrace{0, \dots, 0}_{\text{$n-1$-many zeroes}}, p_n, 0, \dots), \text{ where $p_n$ is the $n$-th prime}.\]
(Exercise: show that the set of $a^i$ does not satisfy the minimality property, and show that the set of $b^i$ does.)
What this example shows is that the criterion we’ve established for the finite dimensional case falls flat in the infinite case, because even though every $b^n$ is minimal wrt the span of the previous $b^i$, the set containing all of them cannot be extended to a basis. Furthermore, this shows that the property “the list $L$ can be extended to a basis of the space” is not invariant under directed unions, that is, it is possible that $L_1 \leq L_2 \leq L_3 \leq \dots$ is an increasing sequence of lists of vectors such that each list can be extended to a basis but their union $L$ cannot. This means that an argument through Zorn’s lemma must be carefully crafted, because it cannot be taken for granted that every chain has an upper bound. It is certainly not true in the poset of lists of vectors that can be extended to bases.
Another Approach: Minimizing Coordinates
After the failure of the iterative method, I decided to try something else. Furthermore, I started thinking of how to show that rank of the submodule $N$ is less than or equal to the rank of $M$, so I began thinking about coming up with a basis “one coordinate at a time”.
Another successful idea so far has been the idea of minimization of scalars. In other words, if we have a set of things that forms an ideal, we can find a smallest possible thing. Smallest in the divisibility order, that is.
Mixing those two ideas, I cobbled together the following argument. Suppose, for the sake of argument, that $M = R^3$.
Then, a generic argument of $N \subseteq M$ is of the form $(x,y,z)$. Having the radical idea of minimizing one coordinate at a time, I thought to consider the following: define $v_1$ as an element of $N$ with minimal $x$ coordinate. Then, for any $v \in N$ I can find $a \in R$ such that $a v_1$ has the same $x$ coordinate as $v$. Now, I need to fix the $y$ coordinate, so I’ll pick $v_2$ with minimal $y$ coordinate. But I need to be careful, because I don’t want to mess up the $x$ coordinate. Therefore, I’ll pick $v_2$ with minimal $y$ coordinate, among those vectors with zero $x$ coordinate. Therefore, since $v – a v_1$ has null $x$ coordinate, I can find $b \in R$ such that $v – a v_1 – b v_2$ has null $y$ coordinate, and incidentally it still has null $x$ coordinate. The pattern should be clear by now: pick $v_3$ with minimal $z$ coordinate among those with null $x$ and $y$ coordinate, and I conclude there exists $c$ such that $v – a v_1 – b v_2 = c v_3$, and since $v$ is arbitrary the set $\{v_1, v_2, v_3\}$ spans $N$.
This argument was rather handwavy, so let me make it more rigorous. Consider $M = R^n$ and $N$ a submodule of $M$. For each $i = 1, 2, \dots, n$ define $v_i$ as an element of $N$ with minimal $i$ coordinate among those vectors $w$ with $w_1 = \dots = w_{i-1} = 0$. This exists because of the following argument. Let $I$ be the set of $r \in R$ such that there exists $w \in N$ with $w_1 = \dots = w_{i-1} = 0$ and $w_i = r$. It is easy to check that $I$ is an ideal, and so it is generated by some scalar $r_0$. Then, since this scalar is in $I$, there exists a vector, which is our $v_i$, whose $i$-th coordinate is $r_0$ and whose coordinates $1$ through $i-1$ are null. Furthermore, by definition of $I$ and $r_0$, any vector with coordinates $1$ through $i-1$ null has its $i$-th coordinate a multiple of $r_0$. (I think these last few sentences are unnecessary, are they?)
Now that we’ve created our set $v_1, \dots, v_n$, it is time to check that it is a basis. Of course, this might not be true: we never even guaranteed that these vectors are non-null, and indeed in general some of them can be. As such, we will instead consider the sublist, which we will call $L$, of those $v_i$ whose $i$-th coordinate different from zero.
Let us show that $L$ spans $N$. To do so, given $n \in N$ we will construct a linear combination of elements of $L$ that equals $n$. To this effect, consider the following inductive algorithm, which defines a sequence of scalars $a_1, \dots, a_n$:
For each $i = 1, \dots, n$:
1. If $v_i \not \in L$, set $a_i = 0$.
2. Otherwise, let $w = n – a_1 v_1 – \dots – a_{i-1} v_{i-1}$. We know inductively that $w$ has its first $i-1$ coordinates equal to zero.
3. Consequently, $w_i$ is of the form $r (v_i)_i$. Set $a_i$ to equal this $r$.
It is easy to show inductively that the finishing list satisfies $n = \sum a_i v_i$, and since all the coefficients corresponding to vectors not in $L$ are null, this proves that the vectors in $L$ span $N$.
Now, the only thing left to do is to show that the vectors in $L$ are linearly independent. But that’s easy: note that each vector $v_i$ in $L$ is the first in the list to have non-null $i$-th coordinate. This shows linear independence because given a nontrivial linear combination $\sum a_i v_i$ of elements of $L$ that equals zero, the term with biggest index $i$ such that $a_i \neq 0$ is the only one to make a contribution to the $i$-th coordinate of the sum. Therefore, the $i$-th coordinate of the sum is given by $a_i (v_i)_i$, which, because we’re in a domain and $v_i \in L$, implies $a_i = 0$, contradiction. Therefore there is no nontrivial linear combination of the $v_i \in L$ that equals zero.
Therefore, using only three or four paragraphs, we have proven the case for finite dimension which took us oh so long. Woops.
Anyway, the benefit of this argument is that it can be easily extended to infinite dimensions. Not immediately, but it is doable. Let’s begin by extending it to countable rank.
Let $M = R^\infty$, i.e. a sum of countably many copies of $R$. Then, we will construct our (hopefully) basis of $N$, say, $v_1, v_2, \dots$ in a similar way, using minimality. Unfortunately, the very same strategy does not immediately work: we cannot simply pick $v_1$ with minimal first coordinate, $v_2$ with minimal second and null first coordinate, and so on, because when we apply our algorithm to write any $n \in N$ as a linear combination of them, we have no guarantee that they don’t just “run away”. For example, if $N = M$, we could have picked, say, $v_1 = (1,1,0,0,\dots)$, $v_2 = (0,1,1,0,0,\dots)$, and so on, and with these vectors we could never write $e_1 = (1,0,0,\dots)$. In finite dimension we didn’t have this problem: since you can only “go so far right”, you always had the guarantee of termination.
The fix for this is simple: just build it all backwards. Define $v_1$ as a vector with minimal first coordinate and null second, third, and so on. $v_2$ is a vector with minimal second coordinate and null third, fourth, and so on. Then, the aforementioned process does terminate, because at each step, the biggest nonzero coordinate index is always decreasing. In other words, suppose we start with a vector $n = (n_1, n_2, \dots, n_k, 0, 0 \dots)$. Then, $n_k$ is a multiple of $(v_k)_k$, let’s say $n_k = a_k (v_k)_k$. Now, consider $n’ = n – a_k v_k$. It is easy to check that it is of the form $n’ = (n’_1, n’_2, \dots, n’_{k-1}, 0, 0, \dots)$. Repeat the process with $v_{k-1}$ and so on, and after at most $k$ steps we will have written $n = \sum a_i v_i$. This shows that these $v_i$ generate $N$, and the proof for linear independence is the same as in the finite case.
This is actually the general argument, though some changes must be made to allow for uncountably many dimensions. Note that our process is kind of iterative: we need a first dimension, a second dimension, and so on. For the countable case, this is taken care of because we know there is a bijection between the dimensions and the naturals, but for the uncountable case we need to be a bit more careful. The idea is to use the Well-Ordering Theorem from set theory, which states that any set can be well-ordered. If you don’t know what that means, umm, I’ll make a post about it sometime.
If we well-order the set of indices, then we know for sure that there exists a first element, second element, and so on, and the well-order guarantees that we can only “go down so many times”. We’ll do the details shortly but the main point is that, if we well-order the set of indices and do the above procedure (minimize each coordinate while keeping the coordinates after it null) everything works out and we reach a basis.
The Final Proof
In hindsight, this proof is actually a rewritten version of the proof we gave at the start. But I hope it’s more understandable.
Let $M = R^{\oplus \Lambda}$, where $R$ is a PID, and consider a well-ordering of $\Lambda$, which we will use along the proof. Given a submodule $N \subseteq M$, we will show that $N$ has a basis indexed on a subset of $\Lambda$.
For every $\lambda \in \Lambda$, define $v_\lambda$ as an element of $N$ with $(v_\lambda)_\eta = 0$ for $\eta > \lambda$, and $(v_\lambda)_\lambda$ minimal in the divisibility order. To show that this exists, define
\[I = \{\, w_\lambda \mid w \in N \text{ such that } w_\eta = 0 \text{ for } \eta > \lambda\,\}.\]
It is trivial to check that this is an ideal of $R$. Since $R$ is a PID, it is generated by some $a_\lambda \in R$. Since, in particular, $a_\lambda \in I$, there exists some $v_\lambda$ such that $v_\lambda = a_\lambda$ and $v_\eta = 0$ for $\eta > \lambda$.
Now, let $\Lambda_0$ be the set of indices $\lambda \in \Lambda$ such that $a_\lambda \neq 0$. We claim that the set $\{v_\lambda\}_{\lambda \in \Lambda_0}$ forms a basis of $N$.
Proof that this set is linearly independent: suppose that some nontrivial linear combination $\sum a_i v_{\lambda_i}$ equals zero. We will show that all $a_i$ are null. To do so, assume without loss of generality that every $a_i$ is not zero (we can remove zeros from the sum). Let $\lambda_0 = \max \{\lambda_i\}$, which exists because this set is finite and non-empty. Then, it is easy to check that $\left(\sum a_i v_{\lambda_i} \right)_{\lambda_0} = a_i$. But this must be zero. This is a contradiction, which means that $\lambda_0$ cannot exist after all, and so our linear combination is necessarily the trivial one.
Proof sketch that this set generates $N$ (cleaner proof in next paragraph): Let $n_0 \in N$. Consider the algorithm given as follows. Supposing $n_k$ is defined and not null, let $\lambda_k$ be the biggest nonzero index in $n_k$. Then, it is easy to check that $\lambda_k \in \Lambda_0$. Let $a_k$ be such that $(n_k)_{\lambda_k} = a_k (v_{\lambda_k})_{\lambda_k}$ (exists by definition of $v_\lambda$). Then, define $n_{k+1}$ as $n_k – a_k v_{\lambda_k}$. It is trivial to check that $\lambda_{k+1}<\lambda_k$, or, in other words, the sequence of lambdas is a monovariant. If this algorithm continued indefinitely, the set $\{\lambda_k\}_{k \in \N}$ would have a minimal element (since we well-ordered $\Lambda$), which is absurd because this would correspond to some $\lambda_{k_0}$, which cannot be minimal because it is greater than $\lambda_{k_0+1}$. Therefore, the algorithm must halt in finite time, and so some $n_k$ must be null, which shows that $n_0$ can be written as $a_0 v_{\lambda_0}+ \dots + a_{k-1} v_{\lambda_{k-1}}$, as desired.
Alternative proof that this set generates $N$ (cleaner): Suppose that $N_0 = N \setminus \mathrm{span}\{v_\lambda\}_{\lambda \in \Lambda_0}$ was non-empty. Pick an element $n_0$ of $N_0$ with minimal maximum non-null index. More clearly: for each $n \in N_0$ define $\lambda_n = \max\{\lambda \mid n_\lambda \neq 0\}$ (note that this is well-defined because $n \neq 0$). Then, the set of possible values of $\lambda_n$ has a minimum, say $\lambda_{n_0}$. Now find a contradiction, because $\lambda_{n_0} \in \Lambda_0$, so we can define $n_1 = n_0 – a_0 v_{\lambda_{n_0}}$, with the obvious $a_0$. It is trivial to check that $n_1 \in N_0$ and furthermore that $\lambda_{n_1} < \lambda_{n_0}$, contradicting the minimality of $\lambda_{n_0}$.
The proof is complete.
Wow, fantastic blog layout! How long have you ever been blogging for?
you made running a blog glance easy. The overall glance of your web
site is excellent, let alone the content! You can see similar here sklep internetowy
Hi there, simply became alert to your weblog thru Google, and located that it is really informative. I am gonna watch out for brussels. I will be grateful in the event you continue this in future. Many folks might be benefited from your writing. Cheers!
What i do not understood is in fact how you’re no longer actually much more neatly-preferred than you might be now. You’re so intelligent. You realize therefore considerably in relation to this matter, made me individually imagine it from a lot of various angles. Its like women and men aren’t fascinated unless it is one thing to accomplish with Girl gaga! Your own stuffs excellent. Always maintain it up!
I genuinely enjoy reading through on this site, it has fantastic content. “Beware lest in your anxiety to avoid war you obtain a master.” by Demosthenes.
Sweet blog! I found it while surfing around on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I’ve been trying for a while but I never seem to get there! Cheers
FitSpresso: An Outline FitSpresso is a weight management formula made using five herbal ingredients.
I don’t even understand how I ended up right here, but I assumed this submit was good. I do not understand who you’re however definitely you’re going to a famous blogger in case you aren’t already 😉 Cheers!
I like the helpful information you provide in your articles. I’ll bookmark your blog and check again here regularly. I’m quite certain I’ll learn plenty of new stuff right here! Good luck for the next!
Good – I should certainly pronounce, impressed with your site. I had no trouble navigating through all tabs as well as related info ended up being truly simple to do to access. I recently found what I hoped for before you know it at all. Quite unusual. Is likely to appreciate it for those who add forums or something, web site theme . a tones way for your customer to communicate. Nice task..
Once I originally commented I clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I get four emails with the same comment. Is there any method you’ll be able to take away me from that service? Thanks!
Would you be thinking about exchanging links?
Thank you for sharing with us, I conceive this website genuinely stands out : D.
great points altogether, you just gained a brand new reader. What would you suggest about your post that you made a few days ago? Any positive?
Saved as a favorite, I really like your blog!
I’m truly enjoying the design and layout of your blog. It’s a very easy on the eyes which makes it much more pleasant for me to come here and visit more often. Did you hire out a developer to create your theme? Exceptional work!
Thank you for the sensible critique. Me and my neighbor were just preparing to do some research on this. We got a grab a book from our area library but I think I learned more clear from this post. I am very glad to see such wonderful information being shared freely out there.
Hi there would you mind letting me know which webhost you’re utilizing? I’ve loaded your blog in 3 different browsers and I must say this blog loads a lot faster then most. Can you recommend a good hosting provider at a honest price? Cheers, I appreciate it!
Thanks, I have recently been searching for info approximately this subject for a long time and yours is the best I have found out till now. However, what in regards to the bottom line? Are you certain in regards to the supply?
Great write-up, I am regular visitor of one’s blog, maintain up the excellent operate, and It’s going to be a regular visitor for a long time.
I like this blog so much, saved to my bookmarks. “American soldiers must be turned into lambs and eating them is tolerated.” by Muammar Qaddafi.
You are a very bright person!
As soon as I observed this website I went on reddit to share some of the love with them.
Wow, fantastic weblog layout! How long have you been running a blog for? you make running a blog look easy. The entire look of your web site is fantastic, as well as the content!
I think you have noted some very interesting details, appreciate it for the post.
Exactly what I was looking for, regards for putting up.
Howdy! This is my 1st comment here so I just wanted to give a quick shout out and tell you I really enjoy reading your articles. Can you suggest any other blogs/websites/forums that go over the same subjects? Thank you!
I went over this site and I conceive you have a lot of wonderful information, saved to bookmarks (:.
Superb blog! Do you have any suggestions for aspiring writers? I’m planning to start my own site soon but I’m a little lost on everything. Would you advise starting with a free platform like WordPress or go for a paid option? There are so many choices out there that I’m completely confused .. Any suggestions? Cheers!
Appreciate it for helping out, wonderful info .
Thanx for the effort, keep up the good work Great work, I am going to start a small Blog Engine course work using your site I hope you enjoy blogging with the popular BlogEngine.net.Thethoughts you express are really awesome. Hope you will right some more posts.
I love it when people come together and share opinions, great blog, keep it up.
Definitely, what a fantastic blog and illuminating posts, I definitely will bookmark your site.Best Regards!
naturally like your web site but you need to check the spelling on quite a few of your posts. A number of them are rife with spelling problems and I find it very bothersome to tell the truth nevertheless I’ll surely come back again.
I am often to blogging and i really appreciate your content. The article has really peaks my interest. I am going to bookmark your site and keep checking for new information.
I like this post, enjoyed this one thanks for putting up.
Thanks for the update, can you make it so I get an update sent in an email whenever you write a fresh article?
Thank you for sharing excellent informations. Your web-site is very cool. I’m impressed by the details that you have on this site. It reveals how nicely you perceive this subject. Bookmarked this website page, will come back for more articles. You, my friend, ROCK! I found simply the info I already searched everywhere and just couldn’t come across. What a perfect website.
As a Newbie, I am permanently searching online for articles that can be of assistance to me. Thank you
Outstanding post, I believe website owners should larn a lot from this web site its really user pleasant.
I like this post, enjoyed this one regards for putting up.
Heya i am for the first time here. I came across this board and I find It truly useful & it helped me out much. I hope to give something back and help others like you helped me.
Would love to forever get updated great site! .
hello there and thank you for your information – I’ve definitely picked up anything new from proper here. I did then again experience a few technical points the use of this website, since I skilled to reload the site many occasions prior to I may just get it to load correctly. I had been brooding about in case your web hosting is OK? Not that I am complaining, but slow loading instances instances will very frequently affect your placement in google and could injury your high-quality score if advertising and ***********|advertising|advertising|advertising and *********** with Adwords. Well I am including this RSS to my e-mail and could glance out for much more of your respective interesting content. Make sure you replace this again soon..
I loved as much as you’ll receive carried out right here. The sketch is attractive, your authored subject matter stylish. nonetheless, you command get bought an shakiness over that you wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this hike.
Thank you for sharing superb informations. Your website is very cool. I am impressed by the details that you have on this site. It reveals how nicely you perceive this subject. Bookmarked this website page, will come back for more articles. You, my friend, ROCK! I found simply the info I already searched all over the place and simply couldn’t come across. What an ideal web site.
I want reading through and I believe this website got some really utilitarian stuff on it! .
hello there and thank you for your information – I’ve certainly picked up something new from right here. I did however expertise a few technical points using this website, as I experienced to reload the web site many times previous to I could get it to load properly. I had been wondering if your web hosting is OK? Not that I am complaining, but slow loading instances times will sometimes affect your placement in google and could damage your high-quality score if ads and marketing with Adwords. Well I am adding this RSS to my e-mail and can look out for much more of your respective exciting content. Make sure you update this again very soon..
Some really prime blog posts on this site, saved to bookmarks.
Howdy I am so thrilled I found your blog page, I really found you by mistake, while I was searching on Digg for something else, Regardless I am here now and would just like to say cheers for a incredible post and a all round thrilling blog (I also love the theme/design), I don’t have time to read through it all at the minute but I have saved it and also included your RSS feeds, so when I have time I will be back to read more, Please do keep up the fantastic job.
My brother recommended I may like this website. He used to be totally right. This post actually made my day. You cann’t believe simply how a lot time I had spent for this information! Thank you!
I like what you guys are up also. Such clever work and reporting! Carry on the superb works guys I¦ve incorporated you guys to my blogroll. I think it’ll improve the value of my site 🙂
you have a great blog here! would you like to make some invite posts on my blog?
You actually make it seem really easy together with your presentation but I to find this topic to be really something which I believe I might never understand. It seems too complicated and very large for me. I’m taking a look forward to your subsequent put up, I will attempt to get the dangle of it!
I’ve been absent for a while, but now I remember why I used to love this site. Thanks, I will try and check back more often. How frequently you update your web site?
What Is Wealth Signal? Wealth Signal isn’t just a financial tool; it’s a new way of thinking about and achieving wealth. Unlike traditional methods that focus on external strategies, Wealth Signal emphasizes changing your internal mindset.
Hiya! I simply want to give a huge thumbs up for the nice data you might have here on this post. I might be coming again to your blog for extra soon.
What is CogniCare Pro? CogniCare Pro is 100 natural and safe to take a cognitive support supplement that helps boost your memory power. This supplement works greatly for anyone of any age and without side effects
I got good info from your blog
Hello my family member! I wish to say that this article is amazing, nice written and come with almost all significant infos. I¦d like to look more posts like this .
Throughout the awesome pattern of things you’ll secure a B- with regard to effort and hard work. Exactly where you actually confused me personally was first on all the particulars. You know, they say, details make or break the argument.. And that could not be more accurate right here. Having said that, let me inform you just what did do the job. The text is highly persuasive which is probably the reason why I am taking the effort in order to opine. I do not really make it a regular habit of doing that. 2nd, although I can easily see a leaps in reasoning you make, I am not really convinced of exactly how you seem to connect the points which in turn make the final result. For the moment I shall yield to your position but wish in the foreseeable future you actually connect your facts much better.
I simply could not go away your site before suggesting that I really loved the usual info a person supply for your visitors? Is going to be again regularly in order to check out new posts.
You are a very smart individual!
Its good as your other content : D, thanks for putting up.
Hello there, I found your site via Google while looking for a related topic, your web site came up, it looks good. I have bookmarked it in my google bookmarks.
Wonderful web site. A lot of useful info here. I’m sending it to a few friends ans also sharing in delicious. And naturally, thank you for your effort!
Hiya, I’m really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really frustrating. A good blog with exciting content, this is what I need. Thank you for keeping this site, I’ll be visiting it. Do you do newsletters? Cant find it.
This is a genuinely excellent blog. Looking forward to more reads. Truly great!
Exceptional post however I was wondering if you could write a litte more on this topic? I’d be very thankful if you could elaborate a little bit further. Thank you!
I am not sure where you are getting your information, however great topic. I needs to spend a while finding out much more or understanding more. Thanks for great information I used to be looking for this information for my mission.
I like this post, enjoyed this one thanks for putting up. “When you make a world tolerable for yourself, you make a world tolerable for others.” by Anais Nin.
Do you have a spam problem on this website; I also am a blogger, and I was wanting to know your situation; we have created some nice methods and we are looking to exchange solutions with others, be sure to shoot me an e-mail if interested.
Keep functioning ,impressive job!
Some genuinely wonderful info , Gladiola I observed this.
I besides believe therefore, perfectly composed post! .
hello!,I like your writing very much! share we communicate more about your article on AOL? I need a specialist on this area to solve my problem. Maybe that’s you! Looking forward to see you.
Hello.This article was really fascinating, especially since I was looking for thoughts on this issue last Tuesday.
Everyone loves what you guys are usually up too. This type of clever work and coverage! Keep up the awesome works guys I’ve included you guys to blogroll.
Hi, Neat post. There’s a problem with your website in internet explorer, would test this… IE still is the market leader and a huge portion of people will miss your magnificent writing due to this problem.
Hello, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you stop it, any plugin or anything you can recommend? I get so much lately it’s driving me crazy so any support is very much appreciated.
Good – I should definitely pronounce, impressed with your web site. I had no trouble navigating through all tabs and related info ended up being truly easy to do to access. I recently found what I hoped for before you know it at all. Reasonably unusual. Is likely to appreciate it for those who add forums or something, site theme . a tones way for your customer to communicate. Excellent task.
Thanks for sharing excellent informations. Your web-site is very cool. I’m impressed by the details that you have on this website. It reveals how nicely you perceive this subject. Bookmarked this web page, will come back for extra articles. You, my friend, ROCK! I found just the info I already searched all over the place and simply couldn’t come across. What a perfect web site.
Spot on with this write-up, I actually suppose this website wants rather more consideration. I’ll most likely be again to learn much more, thanks for that info.
As soon as I discovered this site I went on reddit to share some of the love with them.
You actually make it seem so easy with your presentation but I find this topic to be actually something that I think I would never understand. It seems too complicated and very broad for me. I am looking forward for your next post, I will try to get the hang of it!
you are really a good webmaster. The site loading speed is incredible. It seems that you are doing any unique trick. In addition, The contents are masterpiece. you’ve done a magnificent job on this topic!
Enjoyed looking through this, very good stuff, appreciate it. “Golf isn’t a game, it’s a choice that one makes with one’s life.” by Charles Rosin.
I’d perpetually want to be update on new articles on this website , saved to favorites! .
You could definitely see your skills within the work you write. The arena hopes for even more passionate writers like you who are not afraid to mention how they believe. Always follow your heart.
Some genuinely nice stuff on this web site, I enjoy it.
Some genuinely superb posts on this web site, regards for contribution.
Some really quality blog posts on this website , saved to my bookmarks.
I like what you guys are up too. Such smart work and reporting! Keep up the superb works guys I have incorporated you guys to my blogroll. I think it will improve the value of my web site 🙂
so much excellent info on here, : D.
Hi! I’m at work surfing around your blog from my new iphone 3gs! Just wanted to say I love reading your blog and look forward to all your posts! Keep up the superb work!
I was just seeking this information for some time. After 6 hours of continuous Googleing, at last I got it in your site. I wonder what is the lack of Google strategy that do not rank this type of informative websites in top of the list. Usually the top web sites are full of garbage.
After study a few of the blog posts on your website now, and I truly like your way of blogging. I bookmarked it to my bookmark website list and will be checking back soon. Pls check out my web site as well and let me know what you think.
Excellent blog here! Also your website loads up fast! What web host are you using? Can I get your affiliate link to your host? I wish my website loaded up as quickly as yours lol
Hello there, I found your blog by means of Google even as looking for a comparable topic, your site got here up, it looks good. I have bookmarked it in my google bookmarks.
I was suggested this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my trouble. You are incredible! Thanks!
Wohh precisely what I was looking for, thanks for putting up.
Hey there! Would you mind if I share your blog with my twitter group? There’s a lot of people that I think would really appreciate your content. Please let me know. Thanks
Good day! I could have sworn I’ve been to this blog before but after checking through some of the post I realized it’s new to me. Nonetheless, I’m definitely delighted I found it and I’ll be bookmarking and checking back frequently!
Hello! I just would like to give a huge thumbs up for the great info you have here on this post. I will be coming back to your blog for more soon.
I know this if off topic but I’m looking into starting my own weblog and was curious what all is required to get set up? I’m assuming having a blog like yours would cost a pretty penny? I’m not very web smart so I’m not 100 positive. Any tips or advice would be greatly appreciated. Thanks
This web site is really a walk-through for all of the info you wanted about this and didn’t know who to ask. Glimpse here, and you’ll definitely discover it.
Some really nice and useful info on this site, too I think the style has got good features.
You made some clear points there. I did a search on the subject and found most people will go along with with your blog.
You could definitely see your skills within the work you write. The world hopes for even more passionate writers like you who aren’t afraid to say how they believe. Always go after your heart. “What power has law where only money rules.” by Gaius Petronius.
I have been absent for a while, but now I remember why I used to love this blog. Thanks , I will try and check back more often. How frequently you update your website?
I like this weblog its a master peace ! Glad I detected this on google .
Hiya, I am really glad I’ve found this info. Nowadays bloggers publish just about gossips and internet and this is actually annoying. A good site with interesting content, that’s what I need. Thanks for keeping this site, I will be visiting it. Do you do newsletters? Can’t find it.
Hmm is anyone else encountering problems with the pictures on this blog loading? I’m trying to determine if its a problem on my end or if it’s the blog. Any suggestions would be greatly appreciated.
Keep working ,splendid job!
Good info. Lucky me I reach on your website by accident, I bookmarked it.
I was recommended this web site through my cousin. I am not certain whether or not this put up is written via him as no one else realize such distinctive about my difficulty. You’re wonderful! Thanks!
wonderful post.Ne’er knew this, thankyou for letting me know.
Throughout this grand scheme of things you secure a B+ for effort and hard work. Where you actually lost me personally ended up being on all the specifics. You know, as the maxim goes, details make or break the argument.. And it couldn’t be more correct right here. Having said that, let me say to you what exactly did deliver the results. Your text is definitely very convincing and that is possibly why I am making the effort in order to opine. I do not make it a regular habit of doing that. 2nd, whilst I can easily notice a jumps in reasoning you make, I am not necessarily sure of just how you appear to unite your details which help to make your conclusion. For now I will, no doubt subscribe to your issue but hope in the near future you actually link the facts better.
I like this post, enjoyed this one thanks for putting up.
I have been exploring for a little bit for any high-quality articles or weblog posts on this kind of space . Exploring in Yahoo I at last stumbled upon this website. Studying this information So i?¦m satisfied to convey that I’ve an incredibly excellent uncanny feeling I came upon exactly what I needed. I such a lot indubitably will make sure to do not disregard this site and provides it a look regularly.
Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is completely off topic but I had to tell someone!
Oh my goodness! a tremendous article dude. Thank you Nevertheless I’m experiencing concern with ur rss . Don’t know why Unable to subscribe to it. Is there anybody getting equivalent rss problem? Anybody who knows kindly respond. Thnkx
Generally I don’t read post on blogs, but I wish to say that this write-up very forced me to try and do so! Your writing style has been surprised me. Thanks, quite nice post.
whoah this blog is great i love reading your articles. Keep up the great paintings! You recognize, many people are looking around for this info, you can help them greatly.
I have read some excellent stuff here. Definitely worth bookmarking for revisiting. I wonder how a lot effort you put to make one of these fantastic informative web site.
Valuable info. Lucky me I found your site by accident, and I’m shocked why this accident didn’t happened earlier! I bookmarked it.
Regards for all your efforts that you have put in this. very interesting information.
I really like your writing style, wonderful info, appreciate it for posting :D. “Faith is a continuation of reason.” by William Adams.
Incredible! This blog looks exactly like my old one! It’s on a entirely different topic but it has pretty much the same page layout and design. Outstanding choice of colors!
What Is Kerassentials? Kerassentials is a doctor-formulated oil for healthy skin and nails.
I’m often to blogging and i actually recognize your content. The article has actually peaks my interest. I’m going to bookmark your web site and keep checking for brand new information.
Some really quality content on this internet site, saved to my bookmarks.
Please let me know if you’re looking for a article writer for your weblog. You have some really good articles and I feel I would be a good asset. If you ever want to take some of the load off, I’d absolutely love to write some articles for your blog in exchange for a link back to mine. Please send me an e-mail if interested. Regards!
A lot of whatever you assert happens to be astonishingly legitimate and that makes me ponder the reason why I had not looked at this in this light before. Your article truly did switch the light on for me as far as this particular issue goes. Nonetheless at this time there is one particular issue I am not really too cozy with and while I attempt to reconcile that with the central idea of the issue, let me see just what the rest of the subscribers have to point out.Very well done.
Thanks for all your efforts that you have put in this. very interesting information.
Hello, Neat post. There is an issue with your site in web explorer, would check this… IE still is the marketplace leader and a big part of people will pass over your excellent writing because of this problem.
Everything is very open and very clear explanation of issues. was truly information. Your website is very useful. Thanks for sharing.
I’ve read some good stuff here. Certainly worth bookmarking for revisiting. I wonder how much effort you put to make such a great informative site.
Hey very cool blog!! Guy .. Beautiful .. Amazing .. I’ll bookmark your website and take the feeds also?KI’m happy to find so many helpful information here in the submit, we want develop more techniques in this regard, thank you for sharing. . . . . .
I don’t even understand how I finished up here, however I believed this submit used to be great. I don’t realize who you might be but certainly you’re going to a famous blogger if you happen to aren’t already 😉 Cheers!
Respect to post author, some good information .
Great post. I was checking continuously this blog and I’m impressed! Extremely helpful info specially the last part 🙂 I care for such information much. I was looking for this certain info for a very long time. Thank you and good luck.
Very interesting information!Perfect just what I was searching for!
I have learn some excellent stuff here. Certainly value bookmarking for revisiting. I wonder how much effort you put to make this sort of excellent informative website.
Great website! I am loving it!! Will come back again. I am taking your feeds also
Hello my loved one! I want to say that this article is awesome, great written and come with approximately all significant infos. I would like to see more posts like this .
Some truly excellent content on this website, thanks for contribution. “A religious awakening which does not awaken the sleeper to love has roused him in vain.” by Jessamyn West.
Hello There. I found your weblog the use of msn. That is a very neatly written article. I will be sure to bookmark it and return to learn more of your helpful information. Thank you for the post. I’ll definitely return.
I have learn a few good stuff here. Certainly price bookmarking for revisiting. I surprise how a lot effort you put to make one of these fantastic informative site.
Very interesting topic, thankyou for posting.
I think other web-site proprietors should take this site as an model, very clean and fantastic user friendly style and design, let alone the content. You’re an expert in this topic!
I believe this web site has got some really superb information for everyone :D. “Heat cannot be separated from fire, or beauty from The Eternal.” by Alighieri Dante.
I’ve been absent for a while, but now I remember why I used to love this blog. Thank you, I?¦ll try and check back more frequently. How frequently you update your website?
Pretty! This was a really wonderful post. Thank you for your provided information.
Thanks for one’s marvelous posting! I definitely enjoyed reading it, you may be a great author.I will be sure to bookmark your blog and will eventually come back sometime soon. I want to encourage yourself to continue your great job, have a nice weekend!
I have been absent for some time, but now I remember why I used to love this blog. Thanks , I will try and check back more frequently. How frequently you update your site?
I truly appreciate this post. I¦ve been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thx again
I needed to compose you the very little word so as to thank you again about the precious tactics you’ve shown on this page. It’s really unbelievably generous with you to present without restraint just what numerous people could possibly have advertised for an e-book to get some dough for themselves, notably considering the fact that you might have done it if you ever desired. Those tricks additionally acted to become a fantastic way to realize that the rest have similar passion much like my very own to figure out a great deal more with respect to this condition. I think there are lots of more pleasurable times ahead for those who view your website.
Good – I should definitely pronounce, impressed with your site. I had no trouble navigating through all the tabs as well as related info ended up being truly easy to do to access. I recently found what I hoped for before you know it in the least. Reasonably unusual. Is likely to appreciate it for those who add forums or something, site theme . a tones way for your client to communicate. Excellent task..
Hello, i read your blog from time to time and i own a similar one and i was just curious if you get a lot of spam remarks? If so how do you reduce it, any plugin or anything you can suggest? I get so much lately it’s driving me mad so any assistance is very much appreciated.
Fascinating blog! Is your theme custom made or did you download it from somewhere? A design like yours with a few simple tweeks would really make my blog jump out. Please let me know where you got your theme. Many thanks
whoah this weblog is excellent i really like studying your posts. Stay up the great paintings! You already know, a lot of individuals are hunting round for this info, you could help them greatly.
You are my aspiration, I have few web logs and sometimes run out from to post .
This is very fascinating, You are a very skilled blogger. I’ve joined your feed and look ahead to seeking more of your magnificent post. Additionally, I’ve shared your site in my social networks!
Hello. Great job. I did not anticipate this. This is a impressive story. Thanks!
Can I just say what a relief to find someone who actually knows what theyre talking about on the internet. You definitely know how to bring an issue to light and make it important. More people need to read this and understand this side of the story. I cant believe youre not more popular because you definitely have the gift.
Thanks for another fantastic post. The place else may anybody get that kind of information in such an ideal manner of writing? I’ve a presentation next week, and I’m at the look for such information.
Oh my goodness! an amazing article dude. Thanks Nevertheless I am experiencing situation with ur rss . Don’t know why Unable to subscribe to it. Is there anyone getting identical rss downside? Anybody who is aware of kindly respond. Thnkx
Hey very cool web site!! Man .. Beautiful .. Amazing .. I’ll bookmark your web site and take the feeds also…I am happy to find so many useful information here in the post, we need work out more strategies in this regard, thanks for sharing. . . . . .
he blog was how do i say it… relevant, finally something that helped me. Thanks
With havin so much content and articles do you ever run into any problems of plagorism or copyright violation? My website has a lot of unique content I’ve either authored myself or outsourced but it looks like a lot of it is popping it up all over the web without my agreement. Do you know any ways to help prevent content from being ripped off? I’d really appreciate it.
Thank you a lot for sharing this with all people you actually realize what you are speaking about! Bookmarked. Please additionally talk over with my site =). We will have a link trade agreement between us!
Whats Going down i am new to this, I stumbled upon this I have discovered It absolutely helpful and it has helped me out loads. I am hoping to give a contribution & help other users like its aided me. Great job.
Some genuinely wonderful info , Gladiolus I found this.
TOPSEO | Skaitmeninės rinkodaros agentūra Lietuvoje. Interneto svetainės reklama. Auditas. SEO optimizavimas. Efektyvūs darbuotojai
Its like you read my mind! You appear to know so much about this, like you wrote the book in it or something. I think that you can do with some pics to drive the message home a bit, but instead of that, this is magnificent blog. A fantastic read. I will certainly be back.
I appreciate your attention to detail in this blog post. Eager to read more of your work in the future.
I like the efforts you have put in this, thanks for all the great articles.
Have you ever thought about including a little bit more than just your articles? I mean, what you say is important and everything. However think of if you added some great visuals or video clips to give your posts more, “pop”! Your content is excellent but with pics and video clips, this website could definitely be one of the greatest in its field. Amazing blog!
I was very pleased to find this web-site.I wanted to thanks for your time for this wonderful read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you blog post.
Hey, you used to write excellent, but the last few posts have been kinda boring?K I miss your super writings. Past several posts are just a little bit out of track! come on!
I in addition to my guys ended up looking through the best key points from the website and all of a sudden I got a horrible suspicion I had not expressed respect to the web site owner for those tips. All of the guys became consequently warmed to learn all of them and have now honestly been taking advantage of these things. Thank you for simply being really thoughtful as well as for using this form of perfect guides millions of individuals are really wanting to be informed on. Our honest apologies for not saying thanks to you earlier.
Hi there just wanted to give you a quick heads up. The words in your post seem to be running off the screen in Firefox. I’m not sure if this is a formatting issue or something to do with browser compatibility but I thought I’d post to let you know. The design look great though! Hope you get the problem fixed soon. Many thanks
Hey There. I found your blog using msn. This is a very well written article. I’ll be sure to bookmark it and come back to read more of your useful information. Thanks for the post. I will certainly comeback.
As a Newbie, I am continuously browsing online for articles that can benefit me. Thank you
Great tremendous issues here. I?¦m very satisfied to see your article. Thanks so much and i’m having a look forward to touch you. Will you please drop me a e-mail?
I am really inspired with your writing skills and also with the layout on your weblog. Is this a paid subject or did you modify it your self? Anyway stay up the excellent quality writing, it’s rare to peer a nice weblog like this one today..
I’m extremely impressed along with your writing talents as smartly as with the format to your weblog. Is that this a paid subject matter or did you modify it yourself? Anyway keep up the excellent high quality writing, it’s rare to peer a great weblog like this one these days..
Awsome website! I am loving it!! Will be back later to read some more. I am taking your feeds also
Some truly superb content on this internet site, thanks for contribution. “Better shun the bait, than struggle in the snare.” by John Dryden.
Very nice post. I just stumbled upon your blog and wanted to say that I’ve really enjoyed surfing around your blog posts. In any case I will be subscribing to your rss feed and I hope you write again soon!
Just wanna comment that you have a very nice internet site, I love the design and style it actually stands out.
You should take part in a contest for one of the best blogs on the web. I will recommend this site!
Hiya! I know this is kinda off topic however , I’d figured I’d ask. Would you be interested in trading links or maybe guest authoring a blog post or vice-versa? My site discusses a lot of the same subjects as yours and I feel we could greatly benefit from each other. If you might be interested feel free to shoot me an email. I look forward to hearing from you! Awesome blog by the way!
I simply couldn’t leave your site before suggesting that I actually loved the standard information a person provide for your guests? Is going to be back ceaselessly in order to investigate cross-check new posts
kolam4d link.
Would love to always get updated great web site! .
Hi there, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam remarks? If so how do you prevent it, any plugin or anything you can suggest? I get so much lately it’s driving me mad so any support is very much appreciated.
Hi! I just wanted to ask if you ever have any problems with hackers? My last blog (wordpress) was hacked and I ended up losing many months of hard work due to no back up. Do you have any solutions to stop hackers?
I admire your work, thankyou for all the interesting articles.
You should take part in a contest for one of the best blogs on the web. I will recommend this site!
Hey there! I’ve been following your weblog for a while now and finally got the courage to go ahead and give you a shout out from Humble Tx! Just wanted to tell you keep up the excellent job!
Thank you for the good writeup. It in fact was a amusement account it. Look advanced to more added agreeable from you! By the way, how could we communicate?
I love your blog.. very nice colors & theme. Did you create this website yourself? Plz reply back as I’m looking to create my own blog and would like to know wheere u got this from. thanks
It is really a nice and useful piece of info. I’m glad that you shared this helpful information with us. Please keep us informed like this. Thanks for sharing.
Hi my family member! I want to say that this post is amazing, great written and come with approximately all vital infos. I’d like to look extra posts like this .
Depiliacija vašku Klaipėdoje – tai puikus būdas pašalinti nepageidaujamus plaukelius. Procedūra buvo greita ir efektyvi, labai patenkinta rezultatu! Registruokis dabar.
You have brought up a very wonderful points, thankyou for the post.
Excellent blog here! Also your web site loads up very fast! What web host are you using? Can I get your affiliate link to your host? I wish my site loaded up as fast as yours lol
Woah! I’m really loving the template/theme of this blog. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between user friendliness and visual appeal. I must say you have done a awesome job with this. Also, the blog loads super fast for me on Chrome. Exceptional Blog!
Good blog! I truly love how it is easy on my eyes and the data are well written. I am wondering how I might be notified whenever a new post has been made. I’ve subscribed to your RSS which must do the trick! Have a nice day!
Wohh precisely what I was looking for, thanks for putting up.
Thank you a lot for providing individuals with remarkably memorable opportunity to read from this web site. It really is very ideal and also full of fun for me and my office mates to visit your site at least 3 times in 7 days to find out the newest stuff you will have. And lastly, I’m just usually contented with all the good inspiring ideas you serve. Selected 1 areas in this article are truly the most beneficial I have ever had.
There are certainly lots of details like that to take into consideration. That could be a great level to convey up. I offer the thoughts above as general inspiration however clearly there are questions just like the one you convey up where crucial factor will be working in trustworthy good faith. I don?t know if greatest practices have emerged round things like that, but I’m sure that your job is clearly recognized as a fair game. Each boys and girls really feel the affect of only a second’s pleasure, for the remainder of their lives.
Hi there, I found your web site via Google while looking for a related topic, your site came up, it looks great. I have bookmarked it in my google bookmarks.
Terrific work! This is the kind of info that are supposed to be shared across the web. Shame on Google for now not positioning this post higher! Come on over and consult with my site . Thank you =)
Well I sincerely enjoyed reading it. This subject procured by you is very effective for correct planning.
Howdy just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading correctly. I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both show the same outcome.
I like the efforts you have put in this, thanks for all the great articles.
I reckon something really special in this site.
I am continually browsing online for articles that can facilitate me. Thank you!
Thank you, I have recently been searching for information approximately this topic for ages and yours is the greatest I have came upon till now. However, what in regards to the bottom line? Are you certain about the source?
Thank you a lot for giving everyone an exceptionally spectacular opportunity to read from here. It is usually so fantastic and as well , full of fun for me personally and my office peers to visit your web site at minimum thrice every week to find out the latest items you will have. Of course, we are usually pleased for the brilliant guidelines served by you. Selected 1 points on this page are rather the simplest I have ever had.
Lovely just what I was searching for.Thanks to the author for taking his time on this one.
I’m still learning from you, but I’m trying to reach my goals. I certainly liked reading all that is written on your site.Keep the stories coming. I enjoyed it!
You got a very superb website, Gladiola I discovered it through yahoo.
I like this post, enjoyed this one regards for posting. “Pain is inevitable. Suffering is optional.” by M. Kathleen Casey.
Exceptional post however I was wondering if you could write a litte more on this topic? I’d be very thankful if you could elaborate a little bit further. Thanks!
With everything which appears to be building inside this particular subject material, all your viewpoints are generally quite exciting. Even so, I am sorry, but I do not subscribe to your entire suggestion, all be it stimulating none the less. It would seem to everyone that your commentary are not completely rationalized and in reality you are your self not really entirely convinced of your assertion. In any event I did appreciate looking at it.
Some really nice and useful info on this website, besides I believe the style contains fantastic features.
Thank you for sharing superb informations. Your web site is very cool. I’m impressed by the details that you¦ve on this blog. It reveals how nicely you understand this subject. Bookmarked this website page, will come back for more articles. You, my pal, ROCK! I found simply the info I already searched all over the place and simply could not come across. What an ideal site.
Good post and right to the point. I don’t know if this is really the best place to ask but do you people have any thoughts on where to hire some professional writers? Thanks 🙂
Hey there! I know this is kinda off topic however , I’d figured I’d ask. Would you be interested in exchanging links or maybe guest writing a blog post or vice-versa? My site goes over a lot of the same subjects as yours and I think we could greatly benefit from each other. If you’re interested feel free to shoot me an email. I look forward to hearing from you! Wonderful blog by the way!
Explore all Fryd carts flavors, including new and disposable options. Buy now for the ultimate vaping experience. Satisfaction guaranteed!
电报中文下载,纸飞机中文,纸飞机中文版,纸飞机下载,纸飞机中文下载,telegram下载,telegram中文版,telegram中文下载,telegram中文版下载
I really appreciate this post. I¦ve been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thank you again
My brother recommended I would possibly like this website. He was once entirely right. This put up actually made my day. You cann’t believe just how so much time I had spent for this information! Thanks!
Glad to be one of several visitors on this awful web site : D.
You can definitely see your enthusiasm in the work you write. The world hopes for more passionate writers like you who aren’t afraid to say how they believe. Always follow your heart.
I?¦m no longer sure where you are getting your information, but great topic. I needs to spend a while learning more or working out more. Thanks for excellent info I used to be in search of this info for my mission.
Merely a smiling visitant here to share the love (:, btw outstanding design.
I’d have to examine with you here. Which is not one thing I usually do! I take pleasure in reading a post that may make folks think. Additionally, thanks for permitting me to comment!
I think other web-site proprietors should take this web site as an model, very clean and magnificent user genial style and design, as well as the content. You are an expert in this topic!
Hello there, just became aware of your blog through Google, and found that it is truly informative. I am going to watch out for brussels. I’ll be grateful if you continue this in future. Lots of people will be benefited from your writing. Cheers!
I know this if off topic but I’m looking into starting my own blog and was wondering what all is needed to get set up? I’m assuming having a blog like yours would cost a pretty penny? I’m not very internet smart so I’m not 100 certain. Any tips or advice would be greatly appreciated. Cheers
I have not checked in here for some time because I thought it was getting boring, but the last few posts are great quality so I guess I will add you back to my everyday bloglist. You deserve it my friend 🙂
Some truly interesting information, well written and broadly speaking user pleasant.
Greetings! I know this is kinda off topic but I’d figured I’d ask. Would you be interested in trading links or maybe guest writing a blog post or vice-versa? My site covers a lot of the same topics as yours and I think we could greatly benefit from each other. If you happen to be interested feel free to shoot me an e-mail. I look forward to hearing from you! Terrific blog by the way!
After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader.
Thanks for all your efforts that you have put in this. very interesting information.
You made some good points there. I did a search on the subject matter and found mainly persons will consent with your blog.
I’m extremely impressed with your writing skills and also with the layout on your weblog. Is this a paid theme or did you customize it yourself? Either way keep up the excellent quality writing, it’s rare to see a nice blog like this one nowadays..
I always was interested in this subject and still am, regards for posting.
Perfectly written subject matter, thanks for selective information. “In the fight between you and the world, back the world.” by Frank Zappa.
After study a few of the blog posts on your website now, and I truly like your way of blogging. I bookmarked it to my bookmark website list and will be checking back soon. Pls check out my web site as well and let me know what you think.
Hi there, You’ve performed a fantastic job. I will definitely digg it and personally suggest to my friends. I am sure they will be benefited from this site.
I’ll right away grab your rss as I can not find your e-mail subscription link or newsletter service. Do you’ve any? Please let me know in order that I could subscribe. Thanks.
link alternatif kolam4d.
I’d have to check with you here. Which is not something I usually do! I get pleasure from reading a put up that can make folks think. Also, thanks for permitting me to remark!
You got a very superb website, Gladiola I discovered it through yahoo.
I have not checked in here for some time because I thought it was getting boring, but the last few posts are great quality so I guess I will add you back to my everyday bloglist. You deserve it my friend 🙂
I loved as much as you’ll receive performed right here. The cartoon is attractive, your authored subject matter stylish. nevertheless, you command get bought an nervousness over that you would like be delivering the following. unwell indubitably come more before again since precisely the same just about very frequently inside of case you protect this increase.
You got a very excellent website, Glad I discovered it through yahoo.
Right now it sounds like Drupal is the best blogging platform available right now. (from what I’ve read) Is that what you are using on your blog?
Hello there! I know this is kinda off topic but I’d figured I’d ask. Would you be interested in trading links or maybe guest authoring a blog article or vice-versa? My website discusses a lot of the same subjects as yours and I feel we could greatly benefit from each other. If you’re interested feel free to shoot me an email. I look forward to hearing from you! Fantastic blog by the way!
An fascinating dialogue is worth comment. I think that it’s best to write more on this subject, it won’t be a taboo subject however typically individuals are not sufficient to talk on such topics. To the next. Cheers
Valuable information. Lucky me I found your site by accident, and I am shocked why this accident did not happened earlier! I bookmarked it.
Good site! I really love how it is easy on my eyes and the data are well written. I am wondering how I could be notified whenever a new post has been made. I have subscribed to your RSS feed which must do the trick! Have a great day!
I dugg some of you post as I thought they were invaluable very helpful
I am very happy to read this. This is the kind of manual that needs to be given and not the accidental misinformation that’s at the other blogs. Appreciate your sharing this greatest doc.
Hey, you used to write fantastic, but the last several posts have been kinda boring?K I miss your super writings. Past few posts are just a bit out of track! come on!
Thank you, I have recently been searching for info about this topic for ages and yours is the greatest I’ve discovered so far. But, what about the conclusion? Are you sure about the source?
After all, what a great site and informative posts, I will upload inbound link – bookmark this web site? Regards, Reader.
I absolutely love your blog and find a lot of your post’s to be exactly I’m looking for. can you offer guest writers to write content to suit your needs? I wouldn’t mind composing a post or elaborating on a few of the subjects you write about here. Again, awesome website!
Having read this I thought it was very informative. I appreciate you taking the time and effort to put this article together. I once again find myself spending way to much time both reading and commenting. But so what, it was still worth it!
I believe this website has got very great composed written content posts.
Having read this I thought it was very informative. I appreciate you taking the time and effort to put this article together. I once again find myself spending way to much time both reading and commenting. But so what, it was still worth it!
Howdy very cool site!! Man .. Beautiful .. Superb .. I will bookmark your website and take the feeds additionally…I’m satisfied to seek out so many helpful information here in the submit, we need develop more strategies in this regard, thank you for sharing.
Some really nice and utilitarian information on this web site, also I conceive the design has excellent features.
Some truly nice stuff on this internet site, I enjoy it.
I really like your writing style, excellent info, appreciate it for posting :D. “In every affair consider what precedes and what follows, and then undertake it.” by Epictetus.
Nice read, I just passed this onto a friend who was doing a little research on that. And he just bought me lunch as I found it for him smile So let me rephrase that: Thanks for lunch! “No one can wear a mask for very long.” by Seneca.
After research a few of the weblog posts on your website now, and I actually like your means of blogging. I bookmarked it to my bookmark website record and will likely be checking again soon. Pls take a look at my web page as nicely and let me know what you think.
Great beat ! I would like to apprentice at the same time as you amend your web site, how could i subscribe for a weblog website? The account aided me a acceptable deal. I had been a little bit familiar of this your broadcast offered vibrant clear idea
istanbul escort
Good info. Lucky me I reach on your website by accident, I bookmarked it.
istanbul escort
It’s actually a great and useful piece of info. I am happy that you just shared this useful information with us. Please keep us up to date like this. Thank you for sharing.
Hello there, just became aware of your blog through Google, and found that it’s really informative. I am going to watch out for brussels. I will be grateful if you continue this in future. Many people will be benefited from your writing. Cheers!
I really like gathering utile info, this post has got me even more info! .
Youre so cool! I dont suppose Ive read anything like this before. So nice to search out somebody with some authentic ideas on this subject. realy thanks for beginning this up. this web site is one thing that’s needed on the web, someone with a little bit originality. helpful job for bringing something new to the internet!
快连,快连下载,快连vpn,快连vpn下载,快连官方,快连官方下载,letsvpn,letsvpn download
I conceive you have remarked some very interesting points, thanks for the post.
Hello there! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly? My website looks weird when browsing from my iphone. I’m trying to find a theme or plugin that might be able to resolve this issue. If you have any suggestions, please share. Many thanks!
Those are yours alright! . We at least need to get these people stealing images to start blogging! They probably just did a image search and grabbed them. They look good though!
As a Newbie, I am always exploring online for articles that can aid me. Thank you
快连,快连下载,快连vpn,快连vpn下载,快连官方,快连官方下载,letsvpn,letsvpn download
I’m really enjoying the theme/design of your site. Do you ever run into any browser compatibility problems? A small number of my blog readers have complained about my website not working correctly in Explorer but looks great in Safari. Do you have any recommendations to help fix this problem?
快连,快连下载,快连vpn,快连vpn下载,快连官方,快连官方下载,letsvpn,letsvpn download
快连,快连下载,快连vpn,快连vpn下载,快连官方,快连官方下载,letsvpn,letsvpn download
It’s really a great and useful piece of info. I am satisfied that you just shared this helpful information with us. Please stay us up to date like this. Thanks for sharing.
Heya this is kinda of off topic but I was wondering if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding expertise so I wanted to get advice from someone with experience. Any help would be greatly appreciated!
I got what you intend, thanks for putting up.Woh I am pleased to find this website through google.
Hi there would you mind sharing which blog platform you’re working with? I’m going to start my own blog in the near future but I’m having a hard time choosing between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your layout seems different then most blogs and I’m looking for something unique. P.S Apologies for getting off-topic but I had to ask!
whoah this weblog is magnificent i love studying your articles. Stay up the great paintings! You recognize, lots of people are searching around for this information, you can aid them greatly.
An interesting discussion is worth comment. I think that you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers
Wow that was odd. I just wrote an very long comment but after I clicked submit my comment didn’t show up. Grrrr… well I’m not writing all that over again. Anyhow, just wanted to say wonderful blog!
Great line up. We will be linking to this great article on our site. Keep up the good writing.
This is really attention-grabbing, You are an excessively skilled blogger. I have joined your rss feed and look forward to in the hunt for more of your wonderful post. Also, I have shared your web site in my social networks!
Gerçek Bursa escort bayan görükle eskort kız arayanlar , güncel sayfamız ile yeni escort bayanlar ile tanışın. Sınırsız Bursa Görükle Escort Sitemizde
Hello, Neat post. There is an issue together with your site in web explorer, might check thisK IE still is the market chief and a good part of people will miss your excellent writing due to this problem.
I just like the helpful info you supply for your articles. I will bookmark your blog and take a look at again right here frequently. I am reasonably certain I will learn many new stuff right right here! Best of luck for the following!
This design is steller! You definitely know how to keep a reader entertained. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Fantastic job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!
I really like your writing style, wonderful information, thanks for posting : D.
I love your blog.. very nice colors & theme. Did you create this website yourself? Plz reply back as I’m looking to create my own blog and would like to know wheere u got this from. thanks
非小号下载,非小号电脑版下载,非小号电脑版下载,非小号行情,非小号下载,非小号,非小号官网,非 小 号,非 小 号 官网,非小号,非小号官网
非小号下载,非小号电脑版下载,非小号电脑版下载,非小号行情,非小号下载,非小号,非小号官网,非 小 号,非 小 号 官网,非小号,非小号官网
I got what you mean , regards for putting up.Woh I am delighted to find this website through google. “Those who corrupt the public mind are just as evil as those who steal from the public.” by Theodor Wiesengrund Adorno.
Having read this I thought it was very informative. I appreciate you taking the time and effort to put this article together. I once again find myself spending way to much time both reading and commenting. But so what, it was still worth it!
Hi I am so excited I found your webpage, I really found you by accident, while I was looking on Aol for something else, Anyways I am here now and would just like to say kudos for a remarkable post and a all round thrilling blog (I also love the theme/design), I don’t have time to go through it all at the minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be back to read much more, Please do keep up the excellent job.
Very good blog you have here but I was wanting to know if you knew of any message boards that cover the same topics talked about here? I’d really love to be a part of online community where I can get feed-back from other experienced people that share the same interest. If you have any suggestions, please let me know. Cheers!
hey there and thank you for your information – I have definitely picked up anything new from right here. I did however expertise some technical points using this website, since I experienced to reload the web site many times previous to I could get it to load properly. I had been wondering if your hosting is OK? Not that I am complaining, but sluggish loading instances times will sometimes affect your placement in google and could damage your high quality score if ads and marketing with Adwords. Anyway I am adding this RSS to my email and can look out for a lot more of your respective interesting content. Make sure you update this again soon..
you may have an incredible weblog here! would you prefer to make some invite posts on my blog?
Good write-up, I am normal visitor of one¦s website, maintain up the excellent operate, and It is going to be a regular visitor for a lengthy time.
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You obviously know what youre talking about, why waste your intelligence on just posting videos to your site when you could be giving us something enlightening to read?
After looking into a couple of your blog posts, I really admire your blogging technique. It’s now bookmarked, and I’ll be back soon. Check out my website and share your opinions.
I enjoy your writing style truly enjoying this web site.
Thanks for sharing such an enlightening post. I appreciate your blog and always look forward to new updates.
fantastic post, very informative. I wonder why the other experts of this sector do not notice this. You should continue your writing. I am sure, you’ve a huge readers’ base already!
Would you be fascinated about exchanging hyperlinks?
I was very pleased to find this web-site.I wanted to thanks for your time for this wonderful read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you blog post.
I’ve read several good stuff here. Certainly worth bookmarking for revisiting. I surprise how much effort you put to create such a wonderful informative web site.
I loved as much as you’ll receive carried out right here. The sketch is attractive, your authored material stylish. nonetheless, you command get bought an nervousness over that you wish be delivering the following. unwell unquestionably come further formerly again since exactly the same nearly very often inside case you shield this hike.
Great website. Lots of helpful info here. I am sending it to a few buddies ans additionally sharing in delicious. And obviously, thank you on your effort!
Wow! This could be one particular of the most beneficial blogs We’ve ever arrive across on this subject. Actually Wonderful. I am also a specialist in this topic so I can understand your effort.
Hello there, I found your website via Google while searching for a related topic, your site came up, it looks good. I’ve bookmarked it in my google bookmarks.
I like what you guys are up also. Such intelligent work and reporting! Carry on the superb works guys I¦ve incorporated you guys to my blogroll. I think it will improve the value of my site 🙂
Good write-up, I am regular visitor of one’s site, maintain up the nice operate, and It’s going to be a regular visitor for a long time.
Nice read, I just passed this onto a friend who was doing a little research on that. And he just bought me lunch as I found it for him smile So let me rephrase that: Thanks for lunch! “Life is a continual upgrade.” by J. Mark Wallace.
bursa escort,görükle escort
Hello my loved one! I want to say that this post is awesome, nice written and include approximately all significant infos. I would like to peer extra posts like this .
bursa escort,görükle escort
I was very pleased to seek out this internet-site.I wanted to thanks to your time for this wonderful read!! I positively enjoying every little bit of it and I have you bookmarked to check out new stuff you blog post.
Hi there, just became alert to your blog through Google, and found that it’s really informative. I am going to watch out for brussels. I’ll appreciate if you continue this in future. Lots of people will be benefited from your writing. Cheers!
Saved as a favorite, I really like your blog!
BANDARBOLA855 Siap melayani 1x24jam dengan cepat, Hubungi Kami Jika Anda Memiliki Kendala Apapun.
I always was interested in this subject and still am, thanks for posting.
I really enjoyed this post! Your blog has become a go-to for me. Thanks for all the hard work you put in.
I view something genuinely interesting about your blog so I saved to favorites.
Hey very nice web site!! Guy .. Excellent .. Superb .. I will bookmark your site and take the feeds additionally?KI’m satisfied to find numerous useful info here in the put up, we’d like work out extra techniques on this regard, thanks for sharing. . . . . .
I love it when people come together and share opinions, great blog, keep it up.
Some times its a pain in the ass to read what people wrote but this web site is very user friendly! .
Thanks , I’ve recently been searching for info approximately this topic for a long time and yours is the greatest I’ve came upon till now. However, what about the conclusion? Are you positive about the source?
1xBet Promo Code Today – 1XGIFT130. Enter it during registration and receive a bonus of +100 up to $130. Promo codes for registration at 1xBet allow you to increase the welcome bonus both in the bookmaker’s office and in the 1xBet casino. Here is a compilation of the latest 1xBet promo codes for the year 2024. Simply copy the code and apply it during your registration process on the official website, 1xbet.com. By doing so, you will be eligible to receive an enhanced welcome bonus of up to 100.
sex fuck porn
Spot on with this write-up, I actually think this website wants way more consideration. I’ll most likely be once more to learn way more, thanks for that info.
Heya! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing many months of hard work due to no backup. Do you have any solutions to protect against hackers?
I always was concerned in this subject and still am, thanks for putting up.
Attractive part of content. I simply stumbled upon your web site and in accession capital to assert that I get actually enjoyed account your weblog posts. Anyway I’ll be subscribing to your feeds and even I success you get entry to constantly rapidly.
I like this web blog very much, Its a really nice berth to read and incur info . “Never hold discussions with the monkey when the organ grinder is in the room.” by Sir Winston Churchill.
I have been exploring for a bit for any high quality articles or blog posts on this sort of area . Exploring in Yahoo I at last stumbled upon this website. Reading this info So i am happy to convey that I have an incredibly good uncanny feeling I discovered exactly what I needed. I most certainly will make certain to don’t forget this site and give it a glance regularly.
Yeah bookmaking this wasn’t a speculative determination outstanding post! .
I?¦ll immediately seize your rss feed as I can not to find your e-mail subscription hyperlink or e-newsletter service. Do you have any? Please allow me know so that I may subscribe. Thanks.
Some genuinely excellent information, Glad I observed this.
Discover Prime Bot, the ultimate crypto sniper bot offering advanced AI features like sniping, front-running, MEV and more. Supports Ethereum, Solana, BSC, and over 60 chains.
Wonderful site you have here but I was wanting to know if you knew of any discussion boards that cover the same topics talked about here? I’d really love to be a part of online community where I can get suggestions from other experienced individuals that share the same interest. If you have any recommendations, please let me know. Bless you!
You made some first rate points there. I regarded on the internet for the difficulty and found most people will associate with with your website.
Discover Prime Bot, the ultimate crypto sniper bot offering advanced AI features like sniping, front-running, MEV and more. Supports Ethereum, Solana, BSC, and over 60 chains.
Perfect work you have done, this web site is really cool with great information.
What i don’t understood is in fact how you’re not really a lot more well-favored than you might be now. You are very intelligent. You realize therefore considerably in the case of this topic, produced me in my view consider it from numerous numerous angles. Its like women and men are not interested until it?¦s one thing to do with Lady gaga! Your own stuffs outstanding. Always care for it up!
Hello my family member! I wish to say that this article is amazing, great written and come with almost all important infos. I’d like to look more posts like this .
I’ve been exploring for a little for any high-quality articles or blog posts on this sort of area . Exploring in Yahoo I at last stumbled upon this website. Reading this info So i’m happy to convey that I have a very good uncanny feeling I discovered just what I needed. I most certainly will make sure to do not forget this website and give it a glance on a constant basis.
Hello there! I know this is kinda off topic but I was wondering which blog platform are you using for this website? I’m getting tired of WordPress because I’ve had issues with hackers and I’m looking at alternatives for another platform. I would be great if you could point me in the direction of a good platform.
After I originally commented I clicked the -Notify me when new comments are added- checkbox and now each time a remark is added I get four emails with the same comment. Is there any means you possibly can take away me from that service? Thanks!
Hey very nice website!! Man .. Excellent .. Superb .. I’ll bookmark your site and take the feeds also…I am happy to search out a lot of useful info here within the put up, we’d like work out extra techniques on this regard, thank you for sharing.
Keep functioning ,impressive job!
Keep functioning ,remarkable job!
Great write-up, I¦m normal visitor of one¦s web site, maintain up the nice operate, and It is going to be a regular visitor for a long time.
I love the efforts you have put in this, thank you for all the great articles.
Some truly quality blog posts on this internet site, saved to my bookmarks.
What i don’t realize is in fact how you’re now not really much more smartly-favored than you may be now. You are so intelligent. You already know thus significantly in terms of this matter, made me for my part imagine it from so many various angles. Its like women and men are not fascinated until it is something to do with Lady gaga! Your individual stuffs excellent. Always maintain it up!
Telefono Erotico Per Donne, Godere non è mai un Peccato, è un Piacere. Un servizo, discreto, Riservato Esclusivo per te, per i momenti di piacere al Telefono Erotico Per Donne. L'Unica Linea Erotica per Donne in Italia, che regala minuti di piacere al telefono erotico.
You made some clear points there. I did a search on the topic and found most individuals will approve with your blog.
I love reading and I think this website got some really utilitarian stuff on it! .
Hey, you used to write excellent, but the last several posts have been kinda boring?K I miss your great writings. Past few posts are just a bit out of track! come on!
Today, I went to the beachfront with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!
I really appreciate this post. I?¦ve been looking everywhere for this! Thank goodness I found it on Bing. You’ve made my day! Thank you again
Do you mind if I quote a couple of your posts as long as I provide credit and sources back to your webpage? My blog is in the very same area of interest as yours and my visitors would genuinely benefit from some of the information you provide here. Please let me know if this okay with you. Appreciate it!
I’m really inspired with your writing talents and also with the layout to your blog. Is this a paid subject matter or did you modify it your self? Anyway stay up the excellent high quality writing, it is uncommon to look a great weblog like this one these days..
Together with every little thing that appears to be building within this subject matter, all your perspectives are actually rather radical. Nevertheless, I appologize, because I can not give credence to your entire plan, all be it radical none the less. It would seem to everyone that your opinions are generally not completely validated and in reality you are yourself not even wholly certain of your point. In any event I did take pleasure in reading through it.
I consider something genuinely special in this website .
I and my pals ended up analyzing the nice thoughts located on your site while before long I got an awful suspicion I never expressed respect to the web site owner for those techniques. Most of the young men ended up for this reason excited to learn them and have now clearly been taking pleasure in them. Thanks for simply being indeed considerate as well as for opting for this sort of superb areas most people are really desperate to be informed on. My honest regret for not expressing gratitude to sooner.
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You obviously know what youre talking about, why waste your intelligence on just posting videos to your blog when you could be giving us something informative to read?
Thanks for helping out, great info .
I enjoy you because of your whole hard work on this blog. My mother really loves doing research and it’s really easy to see why. Most of us learn all relating to the powerful method you create functional tricks on your website and therefore recommend participation from other people on this concern and my princess is truly being taught a lot of things. Take pleasure in the rest of the year. You have been carrying out a powerful job.
Tinggal klik dan daftar pasti kantong terisi buruan jangan ketinggalan 🙂
Greita ir veiksminga procedūra, labai rekomenduoju visiems! Po depiliacijos vašku oda ilgai išlieka lygi ir be plaukelių. Registruokis dabar.
Precisely what I was looking for, appreciate it for posting.
Buy Herbal Incense Online at USA Herbal Incense. We are the number one Herbal Incense Store in USA. Selling Top Quality Herbal Incense online to K2 Lovers. We pride ourselves with premium quality customer services. We’ve established this online store just for you. You can order Strong Herbal Blends at affordable rates. With discreet packaging and overnight shipping. To ensure that you get the best possible service; we’ve chosen efficient staff that will take care of your orders, shipping follow-ups, feedback’s, requests and concerns
What i don’t realize is actually how you’re not really much more smartly-preferred than you might be right now. You are so intelligent. You know thus significantly in relation to this topic, made me in my opinion consider it from so many various angles. Its like women and men are not fascinated until it’s one thing to accomplish with Girl gaga! Your individual stuffs excellent. All the time deal with it up!
The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought youd have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.
Buy Herbal Incense Online at USA Herbal Incense. We are the number one Herbal Incense Store in USA. Selling Top Quality Herbal Incense online to K2 Lovers. We pride ourselves with premium quality customer services. We’ve established this online store just for you. You can order Strong Herbal Blends at affordable rates. With discreet packaging and overnight shipping. To ensure that you get the best possible service; we’ve chosen efficient staff that will take care of your orders, shipping follow-ups, feedback’s, requests and concerns
Labai džiaugiuosi pasirinkusi depiliaciją vašku Klaipėdoje. Procedūra buvo greita ir neskausminga, o rezultatai puikūs. Oda tapo nepriekaištinga! Registruokis dabar.
Gerçek Bursa escort bayan görükle eskort kız arayanlar , 2024 güncel sayfamız ile yeni escort bayanlar ile tanışın. Sınırsız Bursa Görükle Escort Sitemizde
Thank you for the auspicious writeup. It actually used to be a enjoyment account it. Look complicated to far added agreeable from you! By the way, how can we keep in touch?
I like forgathering useful info, this post has got me even more info! .
Thanks , I have just been looking for information about this topic for ages and yours is the best I’ve discovered so far. But, what about the conclusion? Are you sure about the source?
I will right away grab your rss feed as I can’t in finding your e-mail subscription link or e-newsletter service. Do you’ve any? Kindly let me recognize so that I may just subscribe. Thanks.
Excellent read, I just passed this onto a friend who was doing a little research on that. And he just bought me lunch because I found it for him smile Thus let me rephrase that: Thank you for lunch!
I’m a Professional SEO Expert with over 10 years of industry experience, an SEO Specialist in White Hat SEO techniques, SMM, SEM, and Web Traffic, and a High Authority Backlinks/building expert. Please feel free to get in touch today and we can discuss your project and what you want to achieve
I intended to write you that tiny word to thank you as before over the spectacular basics you have contributed on this page. It’s really generous of people like you to make publicly just what many people would’ve advertised for an e book to generate some money on their own, most importantly considering the fact that you might have tried it if you ever decided. The good ideas as well acted to become fantastic way to understand that other individuals have a similar fervor like my very own to understand good deal more on the topic of this issue. I am certain there are millions of more fun opportunities up front for people who check out your site.
I’m a Professional SEO Expert with over 10 years of industry experience, an SEO Specialist in White Hat SEO techniques, SMM, SEM, and Web Traffic, and a High Authority Backlinks/building expert. Please feel free to get in touch today and we can discuss your project and what you want to achieve
The #1 funeral wholesale from Europe | Dropshipping | Shop for cremation urns, coffins, funeral flowers, hearses and a lot more | Check our website”
Buy Herbal Incense Online at USA Herbal Incense. We are the number one Herbal Incense Store in USA. Selling Top Quality Herbal Incense online to K2 Lovers
Merely wanna comment on few general things, The website pattern is perfect, the content material is really wonderful : D.
Greetings! Very helpful advice on this article! It is the little changes that make the biggest changes. Thanks a lot for sharing!
Buy Herbal Incense Online at USA Herbal Incense. We are the number one Herbal Incense Store in USA. Selling Top Quality Herbal Incense online to K2 Lovers
Some truly interesting info , well written and broadly speaking user genial.
Your place is valueble for me. Thanks!…
You made certain good points there. I did a search on the issue and found most people will go along with with your blog.
Buy Herbal Incense Online at USA Herbal Incense. We are the number one Herbal Incense Store in USA. Selling Top Quality Herbal Incense online to K2 Lovers
Prime Bot is designed for sniping, front-running, and MEV across multiple blockchains. It offers unmatched efficiency, accuracy, and security with advanced AI, providing essential tools for both novice and experienced traders.
Saved as a favorite, I really like your blog!
Regards for this wondrous post, I am glad I noticed this site on yahoo.
Prime Bot is designed for sniping, front-running, and MEV across multiple blockchains. It offers unmatched efficiency, accuracy, and security with advanced AI, providing essential tools for both novice and experienced traders.
Terrific work! That is the kind of info that are supposed to be shared around the web. Disgrace on the seek engines for no longer positioning this publish higher! Come on over and visit my web site . Thank you =)
WONDERFUL Post.thanks for share..extra wait .. …
I wish to express some appreciation to the writer for rescuing me from this particular setting. Just after looking throughout the internet and seeing methods which are not pleasant, I thought my life was over. Living without the answers to the problems you’ve resolved by way of your entire article is a crucial case, as well as ones that would have in a wrong way affected my career if I had not encountered the website. Your personal competence and kindness in dealing with a lot of stuff was tremendous. I don’t know what I would’ve done if I hadn’t discovered such a point like this. I can also at this point relish my future. Thank you very much for this expert and result oriented guide. I will not think twice to refer the blog to anybody who wants and needs tips about this subject.
Today, I went to the beach with my kids. I found a sea shell and gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She placed the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is totally off topic but I had to tell someone!
There is evidently a lot to realize about this. I think you made certain nice points in features also.
Very interesting topic, appreciate it for posting.
PACKMAN is a brand that offers a line of disposable vape pens and cartridges made with high-quality cannabis oil and concentrates. The key features of PACKMAN
Very interesting topic, thanks for posting.
What’s Happening i am new to this, I stumbled upon this I have discovered It absolutely useful and it has aided me out loads. I’m hoping to contribute & assist different users like its aided me. Good job.
whoah this weblog is excellent i really like reading your posts. Keep up the great work! You realize, many persons are hunting round for this information, you can help them greatly.
As a Newbie, I am continuously browsing online for articles that can be of assistance to me. Thank you
The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought youd have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.
I’ve read a few good stuff here. Definitely worth bookmarking for revisiting. I wonder how much effort you put to make such a magnificent informative website.
Thank you for the auspicious writeup. It in fact was a amusement account it. Look advanced to far added agreeable from you! By the way, how can we communicate?
Nice post. I be taught one thing more challenging on completely different blogs everyday. It would all the time be stimulating to learn content material from different writers and observe a bit of something from their store. I’d choose to use some with the content material on my weblog whether or not you don’t mind. Natually I’ll give you a link in your net blog. Thanks for sharing.
I believe this website contains some rattling excellent info for everyone : D.
Hello There. I found your blog using msn. This is a really well written article. I will make sure to bookmark it and return to read more of your useful information. Thanks for the post. I’ll definitely comeback.
Howdy! Would you mind if I share your blog with my zynga group? There’s a lot of folks that I think would really enjoy your content. Please let me know. Thanks
It’s laborious to find educated individuals on this topic, but you sound like you know what you’re speaking about! Thanks
After study a number of of the weblog posts in your web site now, and I really like your way of blogging. I bookmarked it to my bookmark web site list and shall be checking again soon. Pls take a look at my site as well and let me know what you think.
It is in reality a great and helpful piece of info. I am glad that you shared this helpful information with us. Please keep us up to date like this. Thank you for sharing.
Lovely website! I am loving it!! Will come back again. I am taking your feeds also.
You actually make it seem really easy with your presentation but I in finding this topic to be actually one thing that I feel I’d by no means understand. It sort of feels too complicated and very large for me. I am looking ahead to your next submit, I will attempt to get the hold of it!
I am very happy to read this. This is the type of manual that needs to be given and not the random misinformation that’s at the other blogs. Appreciate your sharing this best doc.
This blog is definitely rather handy since I’m at the moment creating an internet floral website – although I am only starting out therefore it’s really fairly small, nothing like this site. Can link to a few of the posts here as they are quite. Thanks much. Zoey Olsen
Superb blog you have here but I was wanting to know if you knew of any community forums that cover the same topics talked about here? I’d really like to be a part of online community where I can get advice from other knowledgeable individuals that share the same interest. If you have any suggestions, please let me know. Bless you!
What i don’t understood is actually how you’re now not actually a lot more well-preferred than you might be right now. You are very intelligent. You already know therefore considerably relating to this subject, produced me individually consider it from numerous numerous angles. Its like men and women don’t seem to be involved until it?¦s something to do with Lady gaga! Your individual stuffs great. Always take care of it up!
A powerful share, I simply given this onto a colleague who was doing a little bit evaluation on this. And he actually bought me breakfast as a result of I discovered it for him.. smile. So let me reword that: Thnx for the deal with! But yeah Thnkx for spending the time to discuss this, I really feel strongly about it and love reading extra on this topic. If attainable, as you become experience, would you mind updating your blog with extra particulars? It is extremely useful for me. Massive thumb up for this blog submit!
Thank you for some other informative site. Where else may just I get that kind of information written in such an ideal method? I’ve a venture that I’m simply now working on, and I have been at the glance out for such info.
Of course, what a splendid website and instructive posts, I definitely will bookmark your blog.Best Regards!
I appreciate, cause I found just what I was looking for. You’ve ended my 4 day long hunt! God Bless you man. Have a great day. Bye
When I initially commented I clicked the -Notify me when new feedback are added- checkbox and now every time a remark is added I get four emails with the same comment. Is there any means you’ll be able to take away me from that service? Thanks!
I think that is among the so much vital info for me. And i am happy reading your article. But should statement on some general things, The web site style is great, the articles is in point of fact excellent : D. Excellent job, cheers
Perfectly pent articles, Really enjoyed examining.
I couldn’t resist commenting
Its excellent as your other posts : D, thanks for posting.
Great post. I was checking continuously this blog and I am impressed! Extremely useful info specially the last part 🙂 I care for such information a lot. I was seeking this certain information for a very long time. Thank you and best of luck.
Very good website you have here but I was wondering if you knew of any community forums that cover the same topics talked about here? I’d really love to be a part of group where I can get advice from other experienced people that share the same interest. If you have any suggestions, please let me know. Bless you!
Thanks a lot for giving everyone such a splendid possiblity to check tips from this website. It really is very amazing and as well , stuffed with amusement for me personally and my office peers to search the blog minimum thrice weekly to read the fresh tips you have got. Not to mention, we are always happy with the impressive pointers you serve. Certain 2 ideas in this article are definitely the simplest I’ve had.
Hello! I know this is kind of off topic but I was wondering which blog platform are you using for this site? I’m getting tired of WordPress because I’ve had issues with hackers and I’m looking at options for another platform. I would be fantastic if you could point me in the direction of a good platform.
I¦ve read several just right stuff here. Definitely worth bookmarking for revisiting. I wonder how a lot attempt you place to make the sort of great informative site.
Very interesting topic, thanks for posting. “I am convinced that life in a physical body is meant to be an ecstatic experience.” by Shakti Gawain.
Excellent website. A lot of useful information here. I am sending it to some buddies ans also sharing in delicious. And naturally, thank you in your sweat!
Fantastic site you have here but I was curious about if you knew of any discussion boards that cover the same topics discussed here? I’d really like to be a part of community where I can get responses from other experienced individuals that share the same interest. If you have any suggestions, please let me know. Many thanks!
Unquestionably imagine that which you said. Your favourite justification seemed to be on the internet the easiest thing to be aware of. I say to you, I definitely get annoyed while people think about worries that they plainly do not realize about. You managed to hit the nail upon the highest and also outlined out the whole thing without having side-effects , other people can take a signal. Will probably be again to get more. Thanks
Nice blog here! Also your web site loads up very fast! What host are you using? Can I get your affiliate link to your host? I wish my website loaded up as quickly as yours lol
I¦ve been exploring for a bit for any high quality articles or weblog posts in this kind of house . Exploring in Yahoo I eventually stumbled upon this website. Reading this information So i am happy to exhibit that I have an incredibly excellent uncanny feeling I came upon exactly what I needed. I such a lot surely will make certain to don¦t overlook this site and provides it a glance on a continuing basis.
Whats Happening i’m new to this, I stumbled upon this I’ve found It absolutely helpful and it has helped me out loads. I hope to contribute & assist other customers like its helped me. Good job.
Real excellent info can be found on weblog.
I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post…
You are my inhalation, I have few web logs and very sporadically run out from to brand.
Good ?V I should certainly pronounce, impressed with your web site. I had no trouble navigating through all the tabs and related information ended up being truly simple to do to access. I recently found what I hoped for before you know it in the least. Reasonably unusual. Is likely to appreciate it for those who add forums or something, web site theme . a tones way for your client to communicate. Excellent task..
I would like to thnkx for the efforts you have put in writing this blog. I am hoping the same high-grade blog post from you in the upcoming as well. In fact your creative writing abilities has inspired me to get my own blog now. Really the blogging is spreading its wings quickly. Your write up is a good example of it.
I’ve been browsing on-line greater than three hours lately, yet I never found any attention-grabbing article like yours. It is lovely worth sufficient for me. In my view, if all web owners and bloggers made just right content material as you probably did, the net shall be a lot more helpful than ever before. “We are not retreating – we are advancing in another Direction.” by Douglas MacArthur.
ジャンル検索好みのエロ漫画が探せる! 女の子のタイプJK・人妻・OLなど · 女の子の反応我慢・嫌なのに感じてしまう…など · Hに至る理由無理やり・弱みを握られて
Wonderful work! This is the type of information that should be shared around the net. Shame on Google for not positioning this post higher! Come on over and visit my site . Thanks =)
Its excellent as your other posts : D, thankyou for posting.
I like this post, enjoyed this one thanks for putting up. “I never let schooling interfere with my education.” by Mark Twain.
I was very pleased to find this web-site.I wanted to thanks for your time for this wonderful read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you blog post.
Hello, I think your site might be having browser compatibility issues. When I look at your blog in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, awesome blog!
It’s appropriate time to make a few plans for the future and it’s time to be happy. I’ve learn this publish and if I could I wish to counsel you few fascinating things or tips. Maybe you could write next articles referring to this article. I desire to learn even more things approximately it!
I reckon something truly special in this website .
Woah! I’m really loving the template/theme of this site. It’s simple, yet effective. A lot of times it’s difficult to get that “perfect balance” between usability and visual appearance. I must say you’ve done a very good job with this. Additionally, the blog loads super fast for me on Chrome. Excellent Blog!
Just desire to say your article is as astonishing. The clearness in your post is simply nice and i can assume you’re an expert on this subject. Fine with your permission allow me to grab your feed to keep updated with forthcoming post. Thanks a million and please keep up the gratifying work.
Have you ever considered writing an e-book or guest authoring on other sites? I have a blog based upon on the same ideas you discuss and would really like to have you share some stories/information. I know my viewers would value your work. If you’re even remotely interested, feel free to shoot me an e-mail.
Outstanding post, I believe people should larn a lot from this blog its rattling user friendly.
BUY FAVORITE DISPOSABLE To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable BUY FAVORITES 2G DISPOSABLE favorites 2 gram disposable , by favorites disposable , favorites carts disposable ,favorites disposable
BUY FAVORITE DISPOSABLE To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable BUY FAVORITES 2G DISPOSABLE favorites 2 gram disposable , by favorites disposable , favorites carts disposable ,favorites disposable
Terrific post however I was wondering if you could write a litte more on this subject? I’d be very thankful if you could elaborate a little bit more. Bless you!
BUY FAVORITE DISPOSABLE To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable BUY FAVORITES 2G DISPOSABLE favorites 2 gram disposable , by favorites disposable , favorites carts disposable ,favorites disposable
My spouse and I stumbled over here from a different web address and thought I might check things out. I like what I see so i am just following you. Look forward to checking out your web page yet again.
I’d have to examine with you here. Which is not one thing I usually do! I take pleasure in reading a post that may make folks think. Additionally, thanks for permitting me to comment!
It?¦s really a cool and useful piece of info. I?¦m happy that you shared this useful info with us. Please keep us up to date like this. Thanks for sharing.
What i don’t realize is actually how you are no longer actually a lot more smartly-preferred than you might be now. You are very intelligent. You recognize thus considerably with regards to this topic, made me in my view consider it from numerous various angles. Its like men and women don’t seem to be interested until it¦s something to accomplish with Lady gaga! Your personal stuffs great. All the time handle it up!
Someone essentially assist to make severely posts I’d state. That is the very first time I frequented your web page and to this point? I surprised with the analysis you made to make this particular publish extraordinary. Excellent task!
I truly enjoy studying on this website, it contains great content. “One should die proudly when it is no longer possible to live proudly.” by Friedrich Wilhelm Nietzsche.
Howdy very cool site!! Man .. Beautiful .. Wonderful .. I’ll bookmark your site and take the feeds also?KI am happy to find numerous helpful info here within the put up, we need develop extra strategies on this regard, thanks for sharing. . . . . .
Welcome to Fryd Extracts USA, where innovation meets satisfaction in every puff. Our Fryd Extracts Disposable Vape is a masterpiece of flavor and convenience, designed for those who appreciate the finer things in life. Crafted with precision, each disposable vape delivers a seamless blend of rich, nuanced flavors that promise to elevate your vaping experience. Perfect for on-the-go moments or relaxing at home, our disposables offer a hassle- free journey into a world of exquisite taste and unmatched quality. Discover the essence of luxury vaping with Fryd Extracts Disposable Vape – your pocket-sized passport to a universe of flavor.
Shop the best Sprinklez weed brand products online, including Sprinklez strain & mylar bags. Elevate your experience with top-notch Sprinklez weed packs today!
Shop the best Sprinklez weed brand products online, including Sprinklez strain & mylar bags. Elevate your experience with top-notch Sprinklez weed packs today!
To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable
To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable
To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable
To buy your favorite disposable vapes, you can explore various online platforms and vape shops that offer a wide selection of popular disposable vape products favorites disposable thc, favorite dispo , favorite 2g disposable
I genuinely value your work, Great post.
I just could not depart your web site before suggesting that I really enjoyed the standard information a person provide for your visitors? Is going to be back often in order to check up on new posts
I keep listening to the news update talk about receiving boundless online grant applications so I have been looking around for the finest site to get one. Could you tell me please, where could i get some?
Hey, you used to write excellent, but the last few posts have been kinda boring… I miss your tremendous writings. Past several posts are just a bit out of track! come on!
Really wonderful visual appeal on this web site, I’d value it 10 10.
You are my aspiration, I have few web logs and sometimes run out from to brand.
My brother recommended I might like this blog. He was entirely right. This post truly made my day. You cann’t imagine simply how much time I had spent for this info! Thanks!
Hey! I just wanted to ask if you ever have any problems with hackers? My last blog (wordpress) was hacked and I ended up losing many months of hard work due to no back up. Do you have any solutions to protect against hackers?
https://images.google.ad/url?q=https://by-favoritesdisposables.com/product-category/10-count/
https://www.google.co.ls/url?q=https://by-favoritesdisposables.com/product/favorites-carts-horchata-indica/
aicoin,aicoin下载,aicoin pc,aicoin download,aicoin 电脑,aicoin 中文
link:aicoin,aicoin下载,aicoin pc,aicoin download,aicoin 电脑,aicoin 中文aicoin,aicoin下载,aicoin pc,aicoin download,aicoin 电脑,aicoin 中文
link:aicoin,aicoin下载,aicoin pc,aicoin download,aicoin 电脑,aicoin 中文aicoin,aicoin下载,aicoin pc,aicoin download,aicoin 电脑,aicoin 中文
Great blog here! Also your web site loads up very fast! What host are you using? Can I get your affiliate link to your host? I wish my site loaded up as quickly as yours lol
I will right away take hold of your rss as I can not find your email subscription hyperlink or e-newsletter service. Do you have any? Please allow me recognise so that I may subscribe. Thanks.
Great article and straight to the point. I am not sure if this is really the best place to ask but do you guys have any ideea where to hire some professional writers? Thank you 🙂
Advertising Best sports betting sites in Korea and all over the world
Advertising Best sports betting sites in Korea and all over the world
Sapporo88 adalah salah satu situs game online gacor terpercaya di Indonesia saat ini dengan Maxwin Tertinggi
Perfect piece of work you have done, this site is really cool with wonderful info .
I would like to thnkx for the efforts you have put in writing this website. I am hoping the same high-grade blog post from you in the upcoming also. In fact your creative writing skills has encouraged me to get my own blog now. Really the blogging is spreading its wings rapidly. Your write up is a great example of it.
Hiya, I am really glad I’ve found this information. Today bloggers publish just about gossips and net and this is actually annoying. A good website with interesting content, that’s what I need. Thanks for keeping this website, I’ll be visiting it. Do you do newsletters? Can not find it.
I will immediately clutch your rss feed as I can not to find your email subscription hyperlink or e-newsletter service. Do you have any? Please let me recognize in order that I could subscribe. Thanks.
Can I simply say what a relief to seek out someone who actually is aware of what theyre talking about on the internet. You undoubtedly know how you can carry a difficulty to gentle and make it important. More people need to learn this and perceive this aspect of the story. I cant imagine youre no more standard because you undoubtedly have the gift.
Good day! I know this is kinda off topic nevertheless I’d figured I’d ask. Would you be interested in exchanging links or maybe guest authoring a blog post or vice-versa? My site discusses a lot of the same topics as yours and I believe we could greatly benefit from each other. If you’re interested feel free to send me an e-mail. I look forward to hearing from you! Superb blog by the way!
Because You is an online florist located in Klang Valley and Kuala Lumpur. We provide same day delivery florist service to a vast part of Klang Valley areas
Prime Bot is designed for sniping, front-running, and MEV across multiple blockchains. It offers unmatched efficiency, accuracy, and security with advanced AI, providing essential tools for both novice and experienced traders.
I truly appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You’ve made my day! Thank you again
I dugg some of you post as I thought they were very beneficial very useful
A lot of whatever you state is supprisingly appropriate and that makes me ponder the reason why I had not looked at this in this light previously. This piece really did turn the light on for me as far as this particular subject goes. But at this time there is one factor I am not really too comfortable with and whilst I make an effort to reconcile that with the main idea of your issue, let me see what the rest of your visitors have to point out.Nicely done.
I’ve read some good stuff here. Definitely price bookmarking for revisiting. I surprise how much attempt you put to create this kind of wonderful informative web site.
Hi , I do believe this is an excellent blog. I stumbled upon it on Yahoo , i will come back once again. Money and freedom is the best way to change, may you be rich and help other people.
I really thankful to find this site on bing, just what I was searching for : D besides saved to my bookmarks.
An impressive share, I simply given this onto a colleague who was doing slightly analysis on this. And he the truth is bought me breakfast because I found it for him.. smile. So let me reword that: Thnx for the deal with! However yeah Thnkx for spending the time to debate this, I feel strongly about it and love reading extra on this topic. If potential, as you become expertise, would you thoughts updating your weblog with more particulars? It’s extremely useful for me. Big thumb up for this weblog submit!
There are some fascinating points in time on this article but I don’t know if I see all of them heart to heart. There’s some validity however I’ll take maintain opinion till I look into it further. Good article , thanks and we want extra! Added to FeedBurner as well
I always was concerned in this topic and still am, thanks for putting up.
Real excellent visual appeal on this web site, I’d value it 10 10.
Buy Packman Vapes UK online at Packman Official. Shop premium disposable vapes with fast delivery. Enjoy top quality and convenience.
Together with every thing that appears to be developing within this subject matter, your points of view are relatively refreshing. Nevertheless, I beg your pardon, because I do not subscribe to your whole idea, all be it exhilarating none the less. It would seem to us that your commentary are not totally justified and in fact you are yourself not really fully confident of the assertion. In any event I did take pleasure in examining it.
F*ckin¦ tremendous issues here. I am very satisfied to peer your article. Thank you so much and i’m having a look forward to touch you. Will you please drop me a e-mail?
kolam4dslot
F*ckin’ remarkable things here. I am very satisfied to see your post. Thanks so much and i’m looking forward to contact you. Will you please drop me a mail?
A powerful share, I just given this onto a colleague who was doing somewhat evaluation on this. And he in actual fact bought me breakfast as a result of I discovered it for him.. smile. So let me reword that: Thnx for the treat! However yeah Thnkx for spending the time to discuss this, I feel strongly about it and love reading more on this topic. If doable, as you grow to be experience, would you mind updating your blog with extra particulars? It’s extremely useful for me. Massive thumb up for this weblog post!
Diuwin Game is a website that can help you realize your goal of earning money. You may also play games like Lottery, Aviator, Fishing Wars, Teen Patti,
Wohh just what I was searching for, thanks for putting up.
I got what you mean , regards for putting up.Woh I am delighted to find this website through google. “Money is the most egalitarian force in society. It confers power on whoever holds it.” by Roger Starr.
Diuwin Game is a website that can help you realize your goal of earning money. You may also play games like Lottery, Aviator, Fishing Wars, Teen Patti,
https://antoninkralik.blog.idnes.cz/redir.aspx?url=https://www.primebotx.com
Good ?V I should definitely pronounce, impressed with your site. I had no trouble navigating through all tabs and related info ended up being truly simple to do to access. I recently found what I hoped for before you know it at all. Reasonably unusual. Is likely to appreciate it for those who add forums or anything, web site theme . a tones way for your customer to communicate. Nice task..
https://zbato.net/u/2193149-becauseyou4
https://www.weddingbee.com/members/becauseyou4/
But a smiling visitant here to share the love (:, btw outstanding design. “Everything should be made as simple as possible, but not one bit simpler.” by Albert Einstein.
I truly enjoy reading through on this web site, it holds great articles.
Nice blog here! Additionally your site a lot up fast! What web host are you the use of? Can I get your affiliate link on your host? I desire my web site loaded up as fast as yours lol
Hi there! I know this is kinda off topic nevertheless I’d figured I’d ask. Would you be interested in trading links or maybe guest writing a blog article or vice-versa? My blog covers a lot of the same subjects as yours and I think we could greatly benefit from each other. If you’re interested feel free to send me an email. I look forward to hearing from you! Terrific blog by the way!
We’re a group of volunteers and starting a new scheme in our community. Your website provided us with valuable info to work on. You’ve done an impressive job and our whole community will be grateful to you.
Hey there! Someone in my Myspace group shared this website with us so I came to take a look. I’m definitely enjoying the information. I’m book-marking and will be tweeting this to my followers! Outstanding blog and terrific style and design.
vape mod, is an electronic device used for vaping e-liquid. Vape pens come in various shapes and sizes, ranging from small and compact to larger devices that resemble traditional cigarettes. Unlike disposable vapes, which are intended for single use, vape pens are rechargeable and refillable.
vape mod, is an electronic device used for vaping e-liquid. Vape pens come in various shapes and sizes, ranging from small and compact to larger devices that resemble traditional cigarettes. Unlike disposable vapes, which are intended for single use, vape pens are rechargeable and refillable.
The 1xbet promo code is “1XGIFT200”, this code is valid in 2024. Use this promo code to unlock a 100 welcome bonus up to 130$. And don’t forget that 1xBet offers a great opportunity to all new customers. Enter this code in the registration form to get a 100 first time deposit welcome bonus.
I have been exploring for a little for any high-quality articles or blog posts in this kind of space . Exploring in Yahoo I at last stumbled upon this website. Reading this info So i am satisfied to convey that I have an incredibly just right uncanny feeling I discovered exactly what I needed. I such a lot certainly will make certain to do not put out of your mind this website and give it a glance regularly.
Hi, just required you to know I he added your site to my Google bookmarks due to your layout. But seriously, I believe your internet site has 1 in the freshest theme I??ve came across. It extremely helps make reading your blog significantly easier.
Buruan Coba Sekarang di jamin dompet Penuh Cuan 🙂
BUY PACKMAN VAPES UK Looking to buy Packman Vapes in the UK? Visit packmanvapesuk.co.uk for a convenient online shopping experience to purchase packman disposable vape products.
Looking to buy Packman Vapes in the UK? Visit packmanvapesuk.co.uk for a convenient online shopping experience to purchase packman disposable vape products.
Dhoniwin is an exciting online casino in Bangladesh. Register or login on Dhoni Win casino to get new users cashback bonus and bonus credits!
Great write-up, I am normal visitor of one?¦s website, maintain up the excellent operate, and It is going to be a regular visitor for a lengthy time.
Nuestra Trayectoria Educativa se inicia en el año 1990 como jardín infantil “MI PEQUEÑO MUNDO DE SAN RAMON” . En el año 2002 se emerge a la comunidad como Escuela DE PÁRVULOS TRADICIONAL con prekinder y kinder. Luego en el año 2008 se inicia modalidad ESPECIAL DE LENGUAJE” para atender a niños y niñas con N.E.E. en el área del lenguaje específicamente TEL (Trastorno Especifico del Lenguaje) que requieren de una estimulación especializada tanto pedagógica como fonoaudiológica. En la actualidad , a partir del año 2024 comienza la modalidad ESPECIAL TEA, brindando de esta manera una educación de calidad en igualdad de oportunidades.
I’m still learning from you, but I’m making my way to the top as well. I certainly enjoy reading everything that is posted on your site.Keep the aarticles coming. I liked it!
Discover captivating manhua stories at TopManhua! With a diverse collection of genres and regularly updated titles, immerse yourself in thrilling adventures, enchanting romances, and mesmerizing mysteries.
BUY FAVORITES 2G DISPOSABLE . These disposable vapes are popular for their user-friendly designs, various flavors, and convenience, catering to both seasoned enthusiasts and newcomers in the vaping world. Favorites extracts typically refer to concentrated forms of e-liquid, which can be used for dripping or adding to a vape tank. Favorites extracts , on the other hand, usually refer to pre-filled cartridges that are compatible with specific vape pens or devices.
Enjoyed looking through this, very good stuff, thanks.
24hdulichviet -Du lich – Hình ảnh các địa điểm du lịch giá rẻ nổi tiếng Việt Nam & thế giới. Tư vấn các tour du lịch khám phá cảnh đẹp, những món ngon… cực hấp dẫn.
Naturewell Juice Bar offers the best acai bowl, juice cleanse, cold pressed juice, juice and smoothies nearby no matter where you are in LA
Can be shipped worldwide. Online shopping site for men’s and women’s cutting-edge fashion brands. Available in English, Japanese, and many other languages.
sniper bot crypto Prime Bot is designed for sniping, front-running, and MEV across multiple blockchains. It offers unmatched efficiency, accuracy, and security with advanced AI, providing essential tools for both novice and experienced traders.
sniper bot crypto Prime Bot is designed for sniping, front-running, and MEV across multiple blockchains. It offers unmatched efficiency, accuracy, and security with advanced AI, providing essential tools for both novice and experienced traders.
Naturewell Juice Bar offers the best acai bowl, juice cleanse, cold pressed juice, juice and smoothies nearby no matter where you are in LA.
Discover the ultimate vaping experience with Flum Vape! Whether you’re searching for “Flum Vape near me” or exploring a variety of enticing “Flum Vape flavors,” we’ve got you covered. Flum Vape offers a wide range of delicious and satisfying flavors that cater to every palate, from fruity to dessert-inspired options. Visit our store today to find the perfect Flum Vape device that suits your style and taste. Don’t miss out on the chance to elevate your vaping journey—check out our selection of Flum Vapes and flavors now!
Rollga Foam Rollers have been proven to increase Flexibility by 22, reduce Muscle Soreness by 6 or more, and Relieve Back & Neck pain utilizing a unique, patented design that targets muscles with greater precision & pressure for more effective muscle release & self massage
Rollga Foam Rollers have been proven to increase Flexibility by 22, reduce Muscle Soreness by 6 or more, and Relieve Back & Neck pain utilizing a unique, patented design that targets muscles with greater precision & pressure for more effective muscle release & self massage
Rollga Foam Rollers have been proven to increase Flexibility by 22, reduce Muscle Soreness by 6 or more, and Relieve Back & Neck pain utilizing a unique, patented design that targets muscles with greater precision & pressure for more effective muscle release & self massage
Rollga Foam Rollers have been proven to increase Flexibility by 22, reduce Muscle Soreness by 6 or more, and Relieve Back & Neck pain utilizing a unique, patented design that targets muscles with greater precision & pressure for more effective muscle release & self massage
リディアダンスアカデミーは、3歳から習える初心者向けのキッズダンススクールです。
東北最大手のパーソナルトレーニングジム、リアルボディの公式HPです。
ScrumLaunch is a company specializing in providing highly skilled Python developers to meet your business needs. We understand that every idea requires a tailored approach, and our experts are ready to help you bring your most ambitious projects to life.
Our top Python developers possess deep knowledge and experience in various areas, including web development, application development, and process automation. We ensure that our specialists not only master modern tools and technologies but also adhere to the highest standards of quality and efficiency.
With ScrumLaunch, you get not just developers, but a team that becomes an integral part of your project. We carefully select specialists based on your business requirements and project specifics. Our flexible collaboration model allows you to scale your team as needed, making us the ideal partner for both startups and large companies.
Welcome to Tattoosphere tattoo studio, we are one of the best tattoo shop/artist in Delhi and we are in the business since last 12 years. When it comes to ant design be it minimalistic or a large scale tattoos we do it all. We mostly do custom designs as per your requirements. Hygiene is one of the most important part of tattooing and we use world’s best tattooing equipment. We are on our way to be one of the best tattoo shop/artist in India.
스카이슬롯 공식 인증 2024년 최신 베스트 슬롯사이트 추천 리스트를 통해 안전한 슬롯게임을 이용할수 있도록 슬롯추천업체 를 선정했습니다
스카이슬롯 공식 인증 2024년 최신 베스트 슬롯사이트 추천 리스트를 통해 안전한 슬롯게임을 이용할수 있도록 슬롯추천업체 를 선정했습니다
Reach us without Prescription. We offer a range of services that you can access without the need for a prescription or insurance
\ 生きづらさを生きやすさへ / 新刊「もっと自分を愛していい」|9つの資格を持つ心理カウンセラー|商業出版は5冊|アダルトチルドレン・HSP・恋愛依存・毒親問題・夫婦仲などの克服サポートは1500人
An information site introducing the latest Japanese pornographic videos.We introduce a variety of Japanese porn movies, from popular porn stars to cute amateurs.
An information site introducing the latest Japanese pornographic videos.We introduce a variety of Japanese porn movies, from popular porn stars to cute amateurs.
様々なサービスや商品のクーポン、割引キャンペーン、ポイントカードをお得に活用する情報をご紹介。
エイジングケアを本気で学ぶ情報サイト ナールスエイジングケアアカデミー
Wellcome To Sbs88 Situs Slot Paling Gacor Juga Gampang MEnang Dengan Deposit Awal 10K, Daftar Sbs88 Sekarang
美容医療を学び体験!ナールス美容医療アカデミー
лавные новости спорта за последний час. Главные спортивные события в Украине и за рубежом. Горячие спортивные новости за сегодня. Лента спортивных новостей
лавные новости спорта за последний час. Главные спортивные события в Украине и за рубежом. Горячие спортивные новости за сегодня. Лента спортивных новостей
I appreciate your generosity in sharing. JLADY is online space for women seeking insightful lifestyle tips, practical life hacks, and empowering advice tailored to enhance every aspect of their lives. With content ranging from beauty and fashion to health, relationships, and career, JLADY offers a comprehensive guide to modern living with a personal touch.
福岡周辺エリアで部屋の片付けを行なっているアークサービスです。遺品整理、空き家片付けなどもお任せください。
Selamat datang di website berbasis teknologi tinggi dalam game slot yang sedang ramai di kalangan bawah sampai kalangan atas se-Indonesia.
仙台駅チカのチャットレディ求人情報!高報酬率・高収入・未経験歓迎、自由シフトで稼ぎやすい!
Cremation Urns for ashes The #1 funeral wholesale from Europe | Dropshipping | Shop for cremation urns, coffins, funeral flowers, hearses and a lot more | Check our website
2024년 최고의 온라인 홀덤 사이트를 엄격한 기준으로 선정하여 이 페이지에서 리뷰합니다.
استمتع بسحبة مزاج 5000 التي تجمع بين الأداء العالي والنكهات الفريدة، مصممة لتمنحك تجربة تدوم طويلاً لعشاق الفيب والشيشة الإلكترونية.
SBS88 SBS88 Situs International Merupakan Pencetus Permainan Slot Online Dan Bandar Taruhan Bola Terupdate Dan Terpercaya Gampang Menang Maxwin.